我正在使用
if __name__ == "__main__":
运行我定义的函数。
但是,作为一种错误捕获措施,我试图实现一种方法来确保文件路径已正确输入到我的脚本运行的.bat文件中,文件名作为参数传入。
我正在做的是定义一个函数来定义某些参数是否“有效”,例如
.endswith("\\")
或
.endswith(".txt")
但是因为它们位于if
块(if __name__
==“ main ”`)内,我正在努力解决如何停止脚本的问题。
我基本上想要将验证函数应用于所有参数,如果有的话返回False
然后停止__main__
函数并以这种方式显示错误消息:
print len(invalid_args), " arguments are invalid, please check input"
但是,此处使用break
在pycharm中显示为"Break is outside of loop"
。
如果验证返回False
并且它全部包含在if __name__ == "__main__"
块中,如何停止运行其余脚本?
以下是我的代码的表示,但没有不必要的细节:
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"
答案 0 :(得分:4)
break
用于打破循环(正如PyCharm告诉你的那样)。
相反,您可以使用以下代码运行测试,如果为true,则不允许其余内容继续运行。
# 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而不是仅打印邮件。
答案 1 :(得分:3)
if
“loop”。您只能break
或for
{{1>}(是循环)while
。要在循环外停止程序,您有几个选项:
raise
错误; sys.exit
整个计划;或if
保护其余代码。例如:
if __name__ == "__main__":
valid_args, invalid_args = process(args)
if invalid_args:
# raise error or exit
# rest of code
或:
if __name__ == "__main__":
valid_args, invalid_args = process(args)
if invalid_args:
# print warning
else:
# rest of code
在函数中,您还可以return
:
def main():
valid_args, invalid_args = process(args)
if invalid_args:
return
# rest of code
if __name__ == "__main__":
main()
答案 2 :(得分:1)
将if __name__ == "__main__"
下的所有逻辑移到单独的函数中,并用
if __name__ == "__main__"
块
if __name__ == "__main__":
doMySetupStuff()
在doMySetupStuff
函数中,如果发现任何参数无效,可以查看参数和return
。