我正在编写一个应用程序,它接受任意命令行参数,然后将它们传递给 python 函数:
$ myscript.py --arg1=1 --arg2=foobar --arg1=4
然后在 myscript.py 中:
import sys
argsdict = some_function(sys.argv)
where argsdict
看起来像这样:
{'arg1': ['1', '4'], 'arg2': 'foobar'}
我确信某个地方有一个图书馆可以做到这一点,但我找不到任何东西。
EDIT:argparse/getopt/optparse 不是我要找的。这些库用于定义每次调用都相同的接口。我需要能够处理任意参数。
除非 argparse/optparse/getopt 具有执行此操作的功能...
你可以使用这样的东西:
myscript.py
import sys
from collections import defaultdict
d=defaultdict(list)
for k, v in ((k.lstrip('-'), v) for k,v in (a.split('=') for a in sys.argv[1:])):
d[k].append(v)
print dict(d)
Result:
C:\>python myscript.py --arg1=1 --arg2=foobar --arg1=4
{'arg1': ['1', '4'], 'arg2': ['foobar']}
注意:该值始终是一个列表,但我认为这更一致。如果你真的想要最终的字典是
{'arg1': ['1', '4'], 'arg2': 'foobar'}
那么你就可以跑
for k in (k for k in d if len(d[k])==1):
d[k] = d[k][0]
然后。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)