3 回答

TA貢獻2041條經驗 獲得超4個贊
只需打印消息,然后使用sys.exit()結束程序。該argparse模塊使用實用程序功能(或多或少地被調整為獨立的):
def exit(status=0, message=None):
if message:
_print_message(message, sys.stderr)
sys.exit(status)
其中_print_message()寫入該消息到指定的文件對象,這里sys.stderr; 基本上只是使用print。

TA貢獻1794條經驗 獲得超8個贊
在您的示例中,我建議您從函數中引發錯誤,并且僅在中調用exit __main__。該消息將使用raise傳遞。例子:
import sys
def run_function(x):
if x == 4:
raise ValueError('error, x cannot be 4')
else:
print 'good x'
return 0
def main():
x=4
run_function(x)
return 0
if __name__ == "__main__":
try:
main()
except ValueError as e:
sys.exit(e)
這樣,您的函數表明它收到了錯誤的值,并且調用者sys.exit根據該錯誤決定調用a 。
有關sys.exit的更多詳細信息:
可選參數arg可以是給出退出狀態的整數(默認為零),也可以是其他類型的對象。如果它是整數,則shell等將零視為“成功終止”,而將任何非零值視為“異常終止”。大多數系統要求它的范圍是0-127,否則會產生不確定的結果。某些系統具有為特定的退出代碼分配特定含義的約定,但這些通常尚不完善。Unix程序通常將2用于命令行語法錯誤,將1用于所有其他類型的錯誤。如果傳遞了另一種類型的對象,則None等于傳遞零,并且將任何其他對象打印到stderr并導致退出代碼為1。特別是,sys.exit(“ some error message”)是發生錯誤時退出程序的快速方法。

TA貢獻1847條經驗 獲得超11個贊
首先,您可能要在遇到錯誤時更改退出代碼。exit(0)
通常表示該進程已終止且沒有錯誤。那么,為什么run_function
以后甚至都沒有檢查(在else
分支中),又為什么要在您的中返回某些內容呢?
除此之外,我在這里看不到任何要回答的問題。
添加回答
舉報