gpt4 book ai didi

python - 如果文件不存在,则优雅退出

转载 作者:IT老高 更新时间:2023-10-28 20:47:54 28 4
gpt4 key购买 nike

我在 Python 3.2.3 中有以下脚本:

try:
file = open('file.txt', 'r')
except IOError:
print('There was an error opening the file!')
sys.exit()

#more code that is relevant only if the file exists

如果文件不存在(或者打开文件时出错),我如何优雅地退出?

我可以使用 exit(),但这会打开一个对话框面板,询问我是否要终止应用程序。

我可以使用 sys.exit(),但这会引发 SystemExit 异常,在输出中看起来不太好。我明白了

Traceback (most recent call last):   
File "file", line 19, in <module>
sys.exit() SystemExit

我可以使用 os.exit(),但这会在 C 级别杀死 Python,而我可能不会执行任何清理操作。

我可以使用 bool 变量并将所有后续代码包装在 if... 中,但这很难看,而且这不是我正在执行的唯一检查。所以我想要六个嵌套的 if...

我只想打印“出现错误...”并退出。我在 IDLE 工作。

最佳答案

这是一种非常优雅的方式。 SystemExit 回溯不会在 IDLE 之外打印。或者,您可以使用 sys.exit(1) 向 shell 指示脚本因错误而终止。

或者,您可以在“主”函数中执行此操作并使用 return 来终止应用程序:

def main():
try:
file = open('file.txt', 'r')
except IOError:
print('There was an error opening the file!')
return

# More code...

if __name__ == '__main__':
main()

这里应用程序的主要执行代码被封装在一个名为“main”的函数中,然后仅当脚本由 Python 解释器直接执行,或者换句话说,如果脚本它被另一个脚本导入。 (如果直接从命令行执行脚本,则 __name__ 变量设置为“__main__”。否则,它将设置为模块的名称。)

这具有将所有脚本执行逻辑收集到一个函数中的优点,使您的脚本更清晰,并使您能够使用 return 语句干净地退出脚本,就像在大多数编译语言中一样。

关于python - 如果文件不存在,则优雅退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13424926/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com