我在寫一個小應用程序,我需要退出程序多次。如何退出程序:sys.stderr.write()或打印
我應該使用:
sys.stderr.write('Ok quitting')
sys.exit(1)
或者我應該只是做一個:
print 'Error!'
sys.exit(1)
哪個更好,爲什麼?請注意,我需要做很多事情。該計劃應徹底退出。
我在寫一個小應用程序,我需要退出程序多次。如何退出程序:sys.stderr.write()或打印
我應該使用:
sys.stderr.write('Ok quitting')
sys.exit(1)
或者我應該只是做一個:
print 'Error!'
sys.exit(1)
哪個更好,爲什麼?請注意,我需要做很多事情。該計劃應徹底退出。
sys.exit('Error!')
注意:如果對象的另一種類型的傳遞
, 無等同於傳遞零, 任何其他對象打印到 sys.stderr並導致退出代碼 爲1.特別是,sys.exit(「some 錯誤消息「)是一種在發生錯誤時退出 程序的快速方法。
如果是錯誤信息,通常應該輸入stderr
- 但是否需要這取決於您的使用情況。如果您希望用戶重定向stdin
,stderr
和stdout
,例如,從其他工具運行程序時,應確保將狀態信息和錯誤消息乾淨地分開。
如果只是你使用該程序,你可能不需要打擾。在這種情況下,您可能只會引發異常,程序將自行終止。
順便說一句,你可以從the docs做
print >>sys.stderr, "fatal error" # Python 2.x
print("fatal error", file=sys.stderr) # Python 3.x
它們是顯示消息的兩種不同方式。
print
一般去sys.stdout
,你知道sys.stderr
是怎麼回事。值得了解stdin, stdout, and stderr之間的差異。
stdout
應該用於正常程序輸出,而stderr
應該只保留用於錯誤消息(異常程序執行)。有用於拆分這些流的實用程序,它允許您的代碼的用戶區分正常輸出和錯誤。
print
可以打印任何類文件對象上,包括sys.stderr
:
print >> sys.stderr, 'My error message'
使用sys.stderr
錯誤的代替sys.stdout的的優點是:
stdout
一個文件,他們仍然在屏幕上看到錯誤。sys.stderr
被重定向到日誌文件,那麼在錯誤記錄之前程序崩潰的可能性就會降低。值得一提的是,有可以提供關閉消息的第三種方式:
sys.exit('My error message')
這將消息發送到stderr
並退出。
謝謝你的回答。 – user225312 2010-06-01 13:29:24