2013-11-23 52 views
0

我是一名python新手。我正在嘗試爲我的一個程序使用argparse來解析命令行參數。當我運行程序我想運行它:現在
prog.py /command:write使用argparse檢查位置參數字符串中的特定字符add_argument()

爲我給這裏的命令行參數(/命令:寫),我用argparse解析它。約束是我只想讓命令行參數包含以下一個或多個參數:字符,數字,/,:, - ,。,\,_
如何在add_argument()函數中指定此約束?

+2

任何原因,你不能用更標準的'--command = write'去? – roippi

+0

是的。因爲這個功能已經在批處理腳本中實現了,但是因爲它們已經過時了,所以我試圖在python腳本中實現它。由於人們已經在使用這種格式,我現在不能改變它。 – tejas

+0

這對argparse來說是一個非常奇怪的約束,我不認爲它可以處理它。我會用標準格式很好的選項編寫程序,並在sed中編寫助手腳本,以便將您需要使用的奇數格式映射爲標準格式。 –

回答

0

您可以在使用parse_args之前過濾sys.argv

import sys 
... 
def foo(a): 
    return a.replace('/','--').replace(':','=') 

# '/command:write' => '--command=write' 

argv = [foo(a) for a in sys.argv] 
parse.parse_args(argv) 

使用re.sub是你想要更復雜的替代

相關問題