Optparse和sys.argv - Python

3 投票
1 回答
1145 浏览
提问于 2025-04-17 15:40

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

如果你通过 OptionParserparse_args() 来解析选项,记得不要直接使用 sys.argv,而是要使用返回的 args,因为 args 里包含了那些还没有被 OptionParser 解析的部分。

比如在你的代码中,把

 apps = sys.argv[1:]

替换成

apps = args

(或者干脆不使用 apps,直接用 args 继续处理)。

撰写回答