Optparse和sys.argv - Python
我写了一个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 个回答
8
如果你通过 OptionParser
的 parse_args()
来解析选项,记得不要直接使用 sys.argv
,而是要使用返回的 args
,因为 args
里包含了那些还没有被 OptionParser
解析的部分。
比如在你的代码中,把
apps = sys.argv[1:]
替换成
apps = args
(或者干脆不使用 apps
,直接用 args
继续处理)。