如何获取argparser参数名称?

2024-06-11 04:41:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试分析从命令行传递的参数。我总共传递了15个参数。我试图通过给它们相同的目的地()来对它们进行分组,我需要对它们进行分组。现在,当我打印输入时,我会得到列表f.e[mylogo.png,otherlogo.png]等等。如何得到类似于{destination:'value1','value2'}的结果。我知道我可以手动操作,但对我来说这不是一个解决方案

   parser = argparse.ArgumentParser(prog='Moodle automation', add_help= False,
                                     description=description(), usage='nana nanan nana')
   parser.add_argument('-logo', '--set_logo',
                        help='',
                        dest='branding',
                        type=str,
                        action='append')

    parser.add_argument('-c_logo', '--set_compact_logo',
                        help='',
                        dest='branding',
                        type=str,
                        action='append'
                        )


    web_status.add_argument('-wn', '--web_new',
                            help=" ",
                            dest='web_state',
                            action="append")

    web_status.add_argument('-wo', '--web_old',
                            help="",
                            dest="web_state",
                            action="append")
    args = parser.parse_args()
     branding_details = args.branding
     print(branding_details)

如果输入:

program.py -logo mylogo.png -c_logo custom_logo.png

我得到输出['mylogo.png', 'custom_logo.png']


Tags: addwebparser参数pnghelpargsaction
2条回答

这里是一个完整的最小示例,我们可以用nargs='*'给出几个logocompact_logo。结果包含参数列表

cli表示要传递给程序的示例字符串

import argparse
parser = argparse.ArgumentParser(prog='Moodle automation', add_help= False,
                                 description='', usage='nana nanan nana')
parser.add_argument('-l', ' set_logo',
                    help='',
                    dest='logo',
                    nargs='*',
                    type=str)

parser.add_argument('-c', ' set_compact_logo',
                    help='',
                    dest='compact_logo',
                    nargs='*',
                    type=str)

cli = '-l mylogo.png -c custom_logo_1.png custom_logo_2.png'
args = parser.parse_args(cli.split())
print("List of arguments")
print(args.logo)
print(args.compact_logo)
print("Create a dict of key values for arguments")
dict_key_args = {key: value for key, value in args._get_kwargs()}   
# Create the following data structure
# {'compact_logo': ['custom_logo_1.png', 'custom_logo_2.png'],
# 'logo': ['mylogo.png']}      

如果您只是print(vars(args)),它将给出如下输出^如果处理对象名,{}始终是一个方便的函数

{'branding': ['mylogo.png', 'custom_logo.png']}

只需从输出中删除这些方括号[],如果使用多个目的地,则可以迭代args字典以获得所需的输出

args_dict = vars(args)
for k, v in args_dict.items():
    print("{", k, ":", str(v).strip('[]'), "}")

输出:

{ branding : 'mylogo.png', 'custom_logo.png' }

或者使用更好的格式

args_dict = vars(args)
for k, v in args_dict.items():
    print('{{{0}: {1}}}'.format(k, str(v).strip('[]')))

输出:

{branding: 'mylogo.png', 'custom_logo.png'}

相关问题 更多 >