我正在写一个小应用程序,我需要退出程序多次。
我应该使用:
sys.stderr.write('Ok quitting') < br > sys.exit(1)
sys.stderr.write('Ok quitting')
sys.exit(1)
或者我应该说:
print 'Error!' < br/> sys.exit(1)
print 'Error!'
哪个更好? 为什么? 注意我需要做很多这样的事情。程序应该完全退出。
如果是一个错误消息,通常应该转到 stderr-但是这是否必要取决于您的用例。如果您希望用户重定向 stdin、 stderr和 stdout,例如在从不同的工具运行程序时,那么您应该确保状态信息和错误消息被清楚地分开。
stderr
stdin
stdout
如果只是你在使用这个程序,你可能不需要费心。在这种情况下,您最好引发一个异常,程序将自行终止。
顺便说一句,你可以
print >>sys.stderr, "fatal error" # Python 2.x print("fatal error", file=sys.stderr) # Python 3.x
sys.exit('Error!')
来自 那些文件的注释:
如果传递了另一种类型的对象, 没有一个等于过零, 以及任何其他对象被打印到 并导致退出代码 特别是 sys.exit (“ some 错误信息”)是一种快速退出的方法 发生错误时的程序。
它们是两种不同的信息显示方式。
print通常转到 sys.stdout,你知道 sys.stderr的去向。了解 标准,标准,标准之间的区别是值得的。
print
sys.stdout
sys.stderr
stdout应该用于正常的程序输出,而 stderr应该只用于错误消息(程序执行异常)。有一些实用程序可以分割这些流,它允许代码的用户区分正常输出和错误。
print可以打印任何类似文件的对象,包括 sys.stderr:
print >> sys.stderr, 'My error message'
对错误使用 sys.stderr而不是 sys.stdout 的好处是:
值得注意的是,还有第三种方式可以提供结束语:
sys.exit('My error message')
这将向 stderr发送一条消息并退出。