【问题标题】:How to convert commandline "key=value" args to dictionary?如何将命令行“key=value”参数转换为字典?
【发布时间】:2019-06-02 17:42:37
【问题描述】:

目前我需要实现一个 python 程序,它接受任意数量的命令行参数,例如

python myprog.py x1=12 y3=hello zz=60

并且需要将参数转换成字典之类的

{"x1": "12", "y3": "hello", "zz": "60"}

我尝试了 argparse 模块,但参数中的键(示例中的 x1、y3、zz)无法事先知道,而 argparse 似乎需要我单独添加参数键,所以我认为它不适合这种特定情况?

知道如何完成这种命令行参数到字典的转换,我是否遗漏了一些关于 argparse 的内容或者我需要使用其他东西吗?

【问题讨论】:

    标签: python-3.x command-line-arguments args


    【解决方案1】:

    您可以通过处理字符串来解析它。例如

    import sys
    
    kw_dict = {}
    for arg in sys.argv[1:]:
        if '=' in arg:
            sep = arg.find('=')
            key, value = arg[:sep], arg[sep + 1:]
            kw_dict[key] = value
    

    【讨论】:

    • 应该是for arg in sys.argv[1:]:,因为程序名永远不应该是一个有用的参数。此外,使用key, sep, value = arg.partition('=') 将允许值包含等号而不会导致异常。
    • 注意到了。我想我的旧代码的主要问题是它不能处理多个等号。更新代码。
    猜你喜欢
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 2020-07-21
    • 2021-05-04
    • 1970-01-01
    • 2021-03-17
    相关资源
    最近更新 更多