2013-02-12 38 views
2

我已經寫了一個python腳本,它接受通過python的optparse模塊輸入。 ,我也從sys.argv獲得輸入。Optparse和sys.argv - Python

當我使用其中任何一個,程序正常工作。例如:

python dperf.py -m 1 -c 2 -n 3 
python dperf.py foobar 

但是,它並沒有當我送你以這種方式輸入。

python dperf.py foobar -m 1 -c 2 -n 3 

我使用的方式有錯嗎sys.argv

parser = optparse.OptionParser() 
#migration 
parser.add_option("-m", type="float", dest="migr") 
#collection 
parser.add_option("-c", type="float", dest="coll") 
#num of lines to read 
parser.add_option("-n", type="float", dest="fileread") 
(options, args) = parser.parse_args() 

ti = options.migr 
colle = options.coll 
linereadfiles = options.fileread 

apps = sys.argv[1:] 
+2

對於新的開發工作,請查看['argparse'](http://docs.python.org/dev/library/argparse.html),因爲['optparse'](http://docs.python .org/2/library/optparse)已棄用。 – Bryan 2013-02-12 20:55:54

回答

7

如果您解析通過OptionParserparse_args()選項,不直接使用sys.argv但返回args而不是它應該包含尚未由OptionParser解析的部分。

例如,在你的代碼通過

apps = args 

更換

apps = sys.argv[1:] 

(或只是報廢appsargs下去)。

+0

你能舉個簡單的例子嗎? – pistal 2013-02-12 20:42:52

+0

我已經更新了我的答案。 – 2013-02-12 20:47:19

+0

問題:我是否應該將問題標題更改爲更合適。還是足夠了? – pistal 2013-02-12 20:49:19