2017-10-11 108 views
2

目前,我使用​​輸出以下文件:我怎麼能默認沒有指向一個路徑名的argparse?

import argparse 
.... 
parser = argparse.ArgumentParser(description='do cool stuff') 
parser.add_argument('--output_text_file',     
    default="outputs/output_file1.txt", 
        help='file path for the output text file') 

這已經是一個可選參數。但是,我希望默認選項爲do not output anything。如果用戶想要文件輸出,他們可以用上面的路徑名稱調用參數,例如`--output_text_file「outputs/my_text.txt」

通常情況下,正確的做法是什麼?

我懷疑,如果我使用:

default="" 

上面會有一個錯誤。

回答

4

很簡單,只是省略了默認:

parser.add_argument('--output-text-file') 

在指定參數時,檢查是否output_text_file is None該名稱將始終存在

+0

>在args來的文件路徑的跨平臺的價值,檢查output_text_file是否爲無。這個名字將永遠存在。 你的意思是,在包中腳本的頂部定義這個變量?我可能不會完全關注你 – ShanZhengYang

+0

它只是意味着在你產生輸出的代碼部分,放置一個條件分支來檢查'如果args.output_text_file不是None:'first。 – wim

+0

我明白了,謝謝 – ShanZhengYang

1

您可以將您的默認設置爲os.devnull,它相當於一個空設備

parser.add_argument('--output_text_file', 
        default=os.devnull, 
        help='file path for the output text file') 
+0

這是第三方軟件,所以做這個假設有點困難 – ShanZhengYang

+0

'os.devnull'是找到'/ dev/null'的正確方法。 – wim

相關問題