Python 如何退出程序:sys.stderr.write()或print
我正在编写一个小应用程序,我需要多次退出该程序 我应该使用:Python 如何退出程序:sys.stderr.write()或print,python,error-handling,Python,Error Handling,我正在编写一个小应用程序,我需要多次退出该程序 我应该使用: sys.stderr.write('Ok quitting')sys.exit(1) 或者我应该做一个: print'错误!'系统退出(1) 哪一个更好,为什么?请注意,我需要经常这样做。程序应该完全退出。如果是错误消息,通常应该转到stderr——但这是否必要取决于您的用例。如果您希望用户重定向stdin、stderr和stdout,例如从其他工具运行程序时,那么您应该确保状态信息和错误消息清晰地分开 如果只是你在使用这个程序,你可
sys.stderr.write('Ok quitting')
sys.exit(1)
或者我应该做一个:
print'错误!'代码>
系统退出(1)
哪一个更好,为什么?请注意,我需要经常这样做。程序应该完全退出。如果是错误消息,通常应该转到stderr
——但这是否必要取决于您的用例。如果您希望用户重定向stdin
、stderr
和stdout
,例如从其他工具运行程序时,那么您应该确保状态信息和错误消息清晰地分开
如果只是你在使用这个程序,你可能不需要麻烦。在这种情况下,您最好只引发一个异常,程序将自行终止
顺便说一下,你可以
print >>sys.stderr, "fatal error" # Python 2.x
print("fatal error", file=sys.stderr) # Python 3.x
注:
如果传递了另一种类型的对象,
零等于零,
任何其他对象都会打印到
sys.stderr并生成退出代码
第1页。特别是sys.exit(“一些
“错误消息”)是一种快速退出的方法
发生错误时的程序
它们是显示信息的两种不同方式
print
通常会转到sys.stdout
,您知道sys.stderr
的去向。了解两者之间的区别是值得的
stdout
应用于正常程序输出,而stderr
应仅保留用于错误消息(异常程序执行)。有一些用于分割这些流的实用程序,允许代码用户区分正常输出和错误
print
可以在任何类似文件的对象上打印,包括sys.stderr
:
print >> sys.stderr, 'My error message'
对错误使用sys.stderr
而不是sys.stdout的优点是:
如果用户将标准输出重定向到文件,他们仍然会在屏幕上看到错误
它是无缓冲的,因此如果将sys.stderr
重定向到日志文件,则在记录错误之前程序崩溃的可能性较小
值得注意的是,有第三种方式可以提供结束语:
sys.exit('My error message')
这将向stderr发送一条消息并退出。sys.exit(“一些错误消息”)
对Python2和Python3都有效吗?@jww:是的。
sys.exit('My error message')