你如何将python中的命令行参数转换为字典?

pri*_*stc 9 python command-line sys argv

我正在编写一个带有任意命令行参数的应用程序,然后将它们传递给python函数:

$ myscript.py --arg1=1 --arg2=foobar --arg1=4
Run Code Online (Sandbox Code Playgroud)

然后在myscript.py里面:

import sys
argsdict = some_function(sys.argv)
Run Code Online (Sandbox Code Playgroud)

这里argsdict看起来是这样的:

{'arg1': ['1', '4'], 'arg2': 'foobar'}
Run Code Online (Sandbox Code Playgroud)

我确定某个地方有一个图书馆可以做到这一点,但我找不到任何东西.

编辑: argparse/getopt/optparse不是我想要的.这些库用于定义每次调用相同的接口.我需要能够处理任意参数.

除非,argparse/optparse/getopt具有执行此操作的功能......

cda*_*rke 1

像这样的东西吗?

import sys

argsdict = {}

for farg in sys.argv:
    if farg.startswith('--'):
        (arg,val) = farg.split("=")
        arg = arg[2:]

        if arg in argsdict:
            argsdict[arg].append(val)
        else:
            argsdict[arg] = [val]     
Run Code Online (Sandbox Code Playgroud)

与指定的略有不同,该值始终是一个列表。

  • 我建议对变量 `argsdict` 使用 [`defaultdict`](http://docs.python.org/library/collections.html#defaultdict-examples)。这样您就可以摆脱“in”测试并可以无忧无虑地进行附加。它使您的代码更加简洁和富有表现力,因此具有Python风格。 (2认同)