4
我想用argparse實現一個只有一個或一個被接受的方式的命令行參數。應該拒絕多次發生。只有一個命令行參數與argparse
我用下面的代碼
#!/usr/bin/env python3
import argparse
cmd_parser = argparse.ArgumentParser()
cmd_parser.add_argument('-o', dest='outfile')
cmd_line = cmd_parser.parse_args()
print(cmd_line.outfile)
一個參數給出預期的結果:
./test.py -o file1
file1
當發出參數兩次,第一次出現被自動忽略:
./test.py -o file1 -o file2
file2
我也試過nargs=1
和action='store'
而沒有達到預期的結果。
我如何告訴argparse拒絕多個參數發生?
謝謝 - 按預期工作。我在argparse中尋找解決方案,這就是爲什麼我忽略了自定義Action方法。 – sd2k9 2013-02-17 14:46:36
我會添加到檢查默認值,如果getattr(名稱空間,self.dest)不是None和self.default是None:'因爲如果你指定一個默認值,它會失敗,而不是因爲參數重複。 – lasote 2017-11-02 08:25:32
@lasote:我認爲使用這個條件將允許'-o'被多次指定而不會引發錯誤,因爲如果指定非None默認值,'self.default'將不會是'None'。我已經改變了上面的代碼以適應上面的不同方式的默認值。 – unutbu 2017-11-02 11:59:29