Optparse和sys.argv – Python

我已经写了一个Python脚本,它接受通过Python的optparse模块input。 我也从sys.argvinput。

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

 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:] 

如果通过parse_args()解析选项,请不要直接使用sys.argv而应该返回包含尚未被OptionParser解析的部分的OptionParser

例如在你的代码中替换

  apps = sys.argv[1:] 

通过

 apps = args 

(或只是废弃apps ,继续与args )。