比方說,我有一個腳本,在文件上做一些工作。它會在命令行中使用該文件的名稱,但如果未提供該文件,則默認爲已知文件名(例如content.txt
)。與python的,我使用以下內容:用argparse指定默認文件名,但不打開它們--help?
parser = argparse.ArgumentParser(description='my illustrative example')
parser.add_argument('--content', metavar='file',
default='content.txt', type=argparse.FileType('r'),
help='file to process (defaults to content.txt)')
args = parser.parse_args()
# do some work on args.content, which is a file-like object
這很好。唯一的問題是,如果我運行python myscript --help
,如果文件不存在(我認爲有意義),則獲得ArgumentError
,並且不顯示幫助文本。我寧願它不嘗試打開文件,如果用戶只想要--help
。有沒有辦法做到這一點?我知道我可以將參數設置爲一個字符串,並在以後自己打開文件(我一直這樣做),但是可以很方便地處理它。
嗯,它看起來像你必須在這裏做一個決定。您可以使默認文件可用(由於它是「默認」),或者只是自己打開文件,就像您建議的那樣。或者,您可以使用stdin作爲默認值,但是您將無法指定默認文件名,如果您不想填充該文件,這可能不是一個錯誤的選項。 –