为了账号安全,请及时绑定邮箱和手机立即绑定

使用 argparse 库从 unix 中的命令行收集输入文件

使用 argparse 库从 unix 中的命令行收集输入文件

素胚勾勒不出你 2022-10-06 20:00:16
我正在尝试编写一个脚本,它将一些标志和文件作为参数,然后执行其他脚本,这取决于用户选择的标志。例如,命令行应如下所示:main_script.py -flag1 -file_for_flag_1 another_file_for_flag_1和main_script.py -flag2 -file_for_flag_2我尝试使用该argparse库,但我不知道如何将输入文件作为后续步骤的参数并根据需要对其进行操作。我开始:parser = argparse.ArgumentParser(description="Processing inputs")parser.add_argument(    "-flat_map",    type=str,    nargs="+",    help="generates a flat addressmap from the given files",)parser.add_argument(    "-json_convert",    type=str,    nargs="+",    help="generates a flat addressmap from the given files",)args = parser.parse_args(args=["-flat_map"])print(args)我最后打印出来args看看我能从中得到什么,但我没有任何可以使用的东西。想得到一些指导。谢谢。
查看完整描述

2 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

如果对您更方便,您可以将 args 转换为 dict(其中键是 arg 选项,值是 arg 值):

args_dict = {key: value for key, value in vars(parser.parse_args()).items() if value}


查看完整回答
反对 回复 2022-10-06
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

使用 argparse 您可以使用子命令来选择子模块:


import argparse


def run_command(parser, args):

    if args.command == 'command1':

        # add code for command1 here

        print(args)

    elif args.command == 'command2':

        # add code for command2 here

        print(args)


parser = argparse.ArgumentParser(

    prog='PROG', 

    epilog="See '<command> --help' to read about a specific sub-command."

)

subparsers = parser.add_subparsers(dest='command', help='Sub-commands')


A_parser = subparsers.add_parser('command1', help='Command 1')

A_parser.add_argument("--foo")

A_parser.add_argument('--bar')

A_parser.set_defaults(func=run_command)


B_parser = subparsers.add_parser('command2', help='Command 2')

B_parser.add_argument('--bar')

B_parser.add_argument('--baz')

B_parser.set_defaults(func=run_command)


args = parser.parse_args()

if args.command is not None:

    args.func(parser, args)

else:

    parser.print_help()

这会生成一个帮助页面,如下所示:


~ python args.py -h

usage: PROG [-h] {command1,command2} ...


positional arguments:

  {command1,command2}  Sub-commands

    command1           Command 1

    command2           Command 2


optional arguments:

  -h, --help           show this help message and exit


See '<command> --help' to read about a specific sub-command.

和help每个子命令的文本:


~ python args.py B -h

arg.py command2 -h

usage: PROG command2 [-h] [--bar BAR] [--baz BAZ]


optional arguments:

  -h, --help  show this help message and exit

  --bar BAR

  --baz BAZ


查看完整回答
反对 回复 2022-10-06
  • 2 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信