簡體   English   中英

sys.exit()不會終止我的程序

[英]sys.exit() does not terminate my program

如果我嘗試成功,我想退出Python腳本。 我的代碼不會退出並繼續執行腳本的其余部分。

如果我運行python myscript.py --help ,我需要退出腳本。 如果我運行python myscript.py我需要執行except部分。

try:
    if sys.argv[1] == '--help' or sys.argv[1] == '-help' or \
            sys.argv[1] == '-h' or sys.argv[1] == '--h':
        print "NAME"
        sys.exit("Usage : python go.py")
except:
    #REST OF THE CODE.

正如文檔所說sys.exit實際上除了提升SystemExit什么也沒做,而你最終會截獲它。 您可以在try-except之外調用sys.exit ,也可以顯式捕獲它,然后重新引發。

你為什么要使用try / except塊? 就像bereal說的那樣,你正在捕捉所有異常並隱藏問題。 try / except塊用於特殊情況。 不是備用代碼路徑。

def main():
    # main code block

if sys.argv[1] == '--help' or sys.argv[1] == '-help' or \
    sys.argv[1] == '-h' or sys.argv[1] == '--h':
    print "Help text"
else:
    main()

此外,作為使用try / except時的一般規則。 抓住你關心的例外。 調試一些甚至無法告訴你錯誤的東西是不可能的。

作為一般性評論,也許你應該看看使用argparse。 http://docs.python.org/library/argparse.html#module-argparse使用argparse,你不必手動檢查argv數組; argparse將為您完成所有工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM