您是否尝试过使用sys.argv
而不是?你可以做这样的事情,那么:
import sys
dict = {}
tmp = []
key = ''
for arg in sys.argv:
if arg[0] == '-':
if tmp != []:
dict[key] = tmp
tmp = []
key = arg
if key == '--args':
dict[key] = sys.argv[sys.argv.find(key)+1:]
break
continue
tmp.append(arg)
这基本上构造带标志的按键和的参数列表来作为标志值的参数字典。你可能想检查一下sys.argv
是什么。如果您有
python script.py -h yes -f yes no yes
sys.argv
调用你的Python脚本可能会['python', 'script.py', '-h', ...]
但我离开那个给你找出来。那么,而不是for arg in sys.argv
你想要做for arg in sys.argv[2:]
或你想要的东西。
所以,如果我们所说的
program.py --valid-arg1 value1 --valid-arg2 value2 --args binary --bin-arg1 bin_arg1_value --bin-arg2 bin_arg2_value
的dict
看起来就像这样:
dict = {
'--valid-arg1': ['value1'],
'--valid-arg2': ['value2'],
'args': ['binary', '--bin-arg1', 'bin_arg1_value', '--bin-arg2', 'bin_arg2_value']
}
现在,如果你想使用什么是--valid-arg1
值,你可以这样做
try:
if dict['--valid-arg1'] == some_value1:
...
elif dict['--valid-arg1'] == some_value2:
...
except KeyError:
# no flag --valid-arg1
pass
随着args
你可以这样做
try:
if something in dict['args']:
...
except KeyError:
# no additional args were given
pass
你是说你要能够检索'args'为'[ '二进制', '--bin-ARG1', 'bin_arg1_value',“--bin -arg2','bin_arg2_value']'? –
是的,这正是他想要的 – campovski
@AlexHall是的,类似的东西 – brachistochron