Python argparse无法识别的参数

时间:2018-02-18 06:20:44

标签: python argparse

我正在尝试使用argparse来解析命令行参数。这是我的代码:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import argparse

def create_parser():
    parser = argparse.ArgumentParser()
    parser.add_argument('--allow_ips', nargs='*')
    return parser

if __name__ == '__main__':
    parser = create_parser()
    namespace = parser.parse_args()

当脚本执行时,argparse会抱怨无法识别的参数。

./prog.py --allow_ips=192.168.0.10 192.168.0.11 192.168.0.12

但是当脚本像这样执行时,argparse就会满足。

./prog.py --allow_ips 192.168.0.10 192.168.0.11 192.168.0.12

我应该如何更改我的代码' ='可以在参数列表中使用吗?

1 个答案:

答案 0 :(得分:4)

根据argparse documentation,在*参数中传递nargs意味着

  

存在的所有命令行参数都会收集到列表中。

当您调用程序而不使用等号时,所有三个IP地址都被视为--allow_ips参数的一部分;它们将以列表的形式提供给您的程序。

使用等号调用程序时,只有第一个IP地址被视为--allow_ips参数的一部分。 argparse然后尝试解析第二个和第三个IP地址。但它不能,因为你的程序不采取任何位置参数。所以argparse会引发异常。