Optparse和sys.argv - Python

pis*_*tal 3 python linux

我编写了一个python脚本,它通过optparsepython模块接受输入.我也接受了输入sys.argv.

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

python dperf.py -m 1 -c 2 -n 3
python dperf.py foobar 
Run Code Online (Sandbox Code Playgroud)

但是,当我以这种方式提供输入时,它不会.

python dperf.py foobar -m 1 -c 2 -n 3
Run Code Online (Sandbox Code Playgroud)

我使用的方式有错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:]
Run Code Online (Sandbox Code Playgroud)

Cle*_*aar 8

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

例如在您的代码替换中

 apps = sys.argv[1:]
Run Code Online (Sandbox Code Playgroud)

通过

apps = args
Run Code Online (Sandbox Code Playgroud)

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