Optparse和sys.argv - Python

时间:2013-02-12 20:17:45

标签: python linux

我编写了一个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:]

1 个答案:

答案 0 :(得分:8)

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

例如在您的代码中替换

OptionParser

通过

 apps = sys.argv[1:]

(或者只是废弃apps = args 并继续apps)。