我编写了一个python脚本,它通过python的optparse
模块接受输入。
我也从sys.argv
接受输入。
当我使用其中任何一个时,程序正常工作。例如:
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:]
答案 0 :(得分:8)
如果您通过parse_args()
的{{1}}解析选项,请不要直接使用OptionParser
,而应使用返回的sys.argv
,而不应包含尚未解析的部分args
。
例如在您的代码中替换
OptionParser
通过
apps = sys.argv[1:]
(或者只是废弃apps = args
并继续apps
)。