我正在写一个小应用程序,我需要多次退出该程序.
我应该使用:
sys.stderr.write('Ok quitting')sys.exit(1)
或者我应该做一个:
print 'Error!'sys.exit(1)
哪个更好?为什么?请注意,我需要做很多事情.该计划应该完全退出.
unu*_*tbu 99
sys.exit('Error!')
Run Code Online (Sandbox Code Playgroud)
来自文档的说明:
如果传递了另一种类型的对象,则None等效于传递零,并且任何其他对象将打印到sys.stderr并导致退出代码为1.特别是,sys.exit("某些错误消息")是快速的发生错误时退出程序的方法.
Kus*_*alP 15
它们是两种不同的显示信息的方式.
print通常去sys.stdout,你知道sys.stderr去哪里.值得了解stdin,stdout和stderr之间的区别.
stdout应该用于正常程序输出,而stderr应该只保留错误消息(异常程序执行).有用于拆分这些流的实用程序,它允许代码的用户区分正常输出和错误.
print可以在任何类似文件的对象上打印,包括sys.stderr:
print >> sys.stderr, 'My error message'
Run Code Online (Sandbox Code Playgroud)
使用sys.stderr错误而不是sys.stdout 的优点是:
stdout到文件,他们仍然会在屏幕上看到错误.sys.stderr重定向到日志文件,则在记录错误之前程序崩溃的可能性较小.值得注意的是,您可以通过第三种方式提供结束消息:
sys.exit('My error message')
Run Code Online (Sandbox Code Playgroud)
这将发送消息stderr并退出.
如果这是一条错误消息,通常应该转到stderr- 但是否这是必要的取决于您的用例.如果希望用户重定向stdin,stderr并stdout从不同的工具上运行程序时,例如,那么你应该确保状态信息和错误信息被清楚分开.
如果只是你使用该程序,你可能不需要打扰.在这种情况下,您可能只是提出异常,程序将自行终止.
顺便说一下,你可以做到
print >>sys.stderr, "fatal error" # Python 2.x
print("fatal error", file=sys.stderr) # Python 3.x
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
52791 次 |
| 最近记录: |