代码之家  ›  专栏  ›  技术社区  ›  Jieke Wei

python参数解析器为列表类型输入定义变量名

  •  0
  • Jieke Wei  · 技术社区  · 7 年前

    我可以选择从用户那里读取输入列表。列表的长度可以是随机的。这是我的代码:

    parser.add_argument('-at', '--addTests', metavar=('test_commands'), nargs='+')
    

    使用“metavar”是给变量命名的一个好方法,但是在nargs没有被修复的情况下,它不起作用。

    我从这行得到的结果是:

    -at test_command [test_command ...], --addTests test_command [test_command]
    

    我希望结果只显示一次“test_command”。

    1 回复  |  直到 7 年前
        1
  •  2
  •   rst-2cv    7 年前

    你开始混淆了

    --addTests test_command [test_command]
    

    你认为这意味着 [test_command] 是参数列表。

    注意 [arg] 符号用于可选参数。因为你用过 nargs='+' ,用户必须提供 至少 一个论点 -at/--addTests 选项,任何进一步的参数对于 --addTests .

    因此,使用:

    --addTests test_command test_command2
    

    调用脚本时:

    args = parser.parse_args()
    

    将给出以下解析参数:

    Namespace(addTests=['test_command', 'test_command2']
    

    然后您可以使用以下方法访问它们:

    for command in args.addTests: 
        print command
    

    或者(而不是打印)您可以运行命令等。