2015-05-28 95 views
0

我想使用'='作爲參數分隔符,並沒有在庫文檔中獲得任何選項。所以,'='被argparse支持作爲參數separator/deliminator。如何使用'='作爲參數分隔符使用argparse Python?

class Parse: 
    def __init__(self): 
     parser = argparse.ArgumentParser() 
     parser.add_argument("script_config",help="Script Config File") 
     parser.add_argument("devices",help="devices") 
     parser.add_argument("log_file",help="log_file") 
     parser.add_argument("result_file",help="result_file") 
     parser.add_argument("testbed_file",help="testbed_file") 
     parser.add_argument("runtime",help="Just Runetime") 
     args = parser.parse_args() 
     print pprint.pprint(args) 

a=Parse() 

輸出到上面的代碼,在這裏我得到了運行時的runtime=10

[email protected]:~/cloudzelera/$ python ../lib/TestsuiteOption.py /tmp/abc.conf qa05__lnx1__i-12b651ea /tmp/123.suite /tmp/result.tmp /tmp/config runtime=10 
Namespace(devices='qa05__lnx1__i-12b651ea', log_file='/tmp/123.suite', result_file='/tmp/result.tmp', runtime='runtime=10', script_config='/tmp/abc.conf', testbed_file='/tmp/config') 
None 
+0

所以......你能張貼代碼,可能是隻是複製粘貼,所以我們可以執行它? - – Melon

回答

1

runtime不是一個可選參數,它是所需的,位置參數。因此,你從來沒有使用的名稱在命令行上:

TestsuiteOption.py /tmp/abc.conf qa05__lnx1__i-12b651ea /tmp/123.suite /tmp/result.tmp /tmp/config 10 

如果你想runtime是可選的,先從兩個破折號的選項(長名稱):

parser.add_argument("--runtime", help="Just Runtime") 

和使用相同的命令行:

TestsuiteOption.py /tmp/abc.conf --runtime=10 qa05__lnx1__i-12b651ea /tmp/123.suite /tmp/result.tmp /tmp/config 

現在的選項可以隨時隨地在命令行中使用,包括在開始。

請注意,​​使用UNIX約定的命令行參數,其中可選參數對於較長的參數以短字符參數--開頭爲-。它不適用於其他公約。

+0

我不能在運行時添加前綴' - ',所以我只需要使用runtime = 10。 – user87005

+0

@ user87005:那麼'argparse'不能幫你。你將不得不編寫自己的命令行解析器。 –

+0

我已經有我自己的解析器(醜陋的sys.argv解析器),現在需要添加一些命令行選項,所以我打算遷移到python的最佳參數解析器。 { 106#讀取sys.args 108 __script_config__ = sys.argv中[1] 109 __devices__ = sys.argv中[2] 110 __log_file__ = sys.argv中[3] 111 __result_file__ = sys.argv中[4] 112 __testbed_file__ = sys.argv [5] } – user87005

0

既然你指定什麼是不符合Unix的參數解析慣例,爲什麼在最後另一條線,你會怎麼做:

args.runtime = args.runtime.split('=')[1] 
相關問題