python - 当不满足条件时中断 if __name__

标签 python loops error-handling break

我正在使用

if __name__ == "__main__":

运行我定义的函数。

然而,作为一种错误捕获措施,我正在尝试实现一种方法来确保文件路径已正确输入到运行我的脚本的 .bat 文件中,文件名作为参数传入。

我正在做的是定义一个函数来定义某些参数是否“有效”,比如

.endswith("\\")

.endswith(".txt")

但是因为它们在 if block 中(if __name__ == "ma​​in"`)我正在努力弄清楚如何在那里停止脚本。

我基本上想将我的验证函数应用于所有参数,如果有返回 False 则停止 __main__ 函数并以这种方式显示错误消息:

print len(invalid_args), " arguments are invalid, please check input"

然而,在这里使用 break 在 pycharm 中显示为 "Break is outside of loop"

如果验证返回 False 并且它全部包含在 if __name__ == "__main__" block 中,我如何才能停止其余脚本的运行?

这是我的代码的表示,但没有不必要的细节:

def clean():
    do_something()

def merge():
    do_something_else()

def valid()
    if valid:
        return True
    if not valid:
        return False

if __name__ == "__main__":
    if not valid():
        "Stop script here" # This is the part I don't know how to do
    if valid():
        try:
            clear()
        except Exception a e:
            print e + "Something Went Wrong"
        try:
            merge()
        except Exception as e:
            print e + "Something Went Wrong"

最佳答案

break用于跳出循环(正如 PyCharm 告诉您的那样)。

相反,您可以使用以下代码来运行您的测试,如果为真,则不允许继续进行其余内容。

# Your code ...

def some_function():
    # Something function that runs your tests
    # If your tests fail then return True, otherwise return False

if __name__ == '__main__':
    if some_function():
        print("Sorry but your .bat file must be broken!")
    else:
        # Run the rest of your code happily.

你甚至可以 raise an Exception而不仅仅是打印一条消息。

关于python - 当不满足条件时中断 if __name__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25974221/

相关文章:

python - 保留基于另一个数组的数组中的唯一值,同时保留顺序

python - 动态增加div容器的高度

python - 使用 sqlalchemy 从 MySQL 数据库中读取巨大的数据集并插入到 postgres 数据库中而不会出现内存问题

python - 在函数中导入导入 - Python 2.6

python比较2个不同长度列表中的项目-顺序很重要

arrays - 使用 perl 动态显示列中的数组内容

python - 程序输出错误的东西 '<function score at 0x036374F8>',并且在调用函数并打印时未输出正确的信息

javascript - 分配从对象列表生成的标签值列表

python - 在 Panda Python 中使用偏差和均值函数

rest - 如果请求的字段不存在,则正确的REST响应