2013-08-26 63 views
3

我如何參考​​中的另一個選項?引用argparse中的其他選項

例如,我有一個修改現有文件的程序。我希望有一個可選的參數,指定輸出文件的名稱,默認與輸入相同(即程序默認會覆蓋輸入文件)。這是我到目前爲止想到的:

parser.add_argument('input',) 
parser.add_argument('output', 
     default = sys.argv()[1], 
     nargs = '?', 
     ) 

但是,這是相當kludgey,似乎不是最佳的解決方案。

回答

2

我只想設置output價值parse_args()後,例如:

args = parser.parse_args() 
if args.output is None: 
    args.output = args.input 

唯一的優勢(即我能想到的)來設置argparse內默認的是,它可以在使用幫助顯示。但是如果用戶要求-h他可能沒有給出input參數。幫助熱線的作用:「默認輸出是一樣的輸入」會更好

你可以創建自定義actioninput,設置兩個args.inputargs.output。但這可能會很棘手。我沒有看到比邏輯後parse_args有任何優勢。