将 IP 列表解析为 python 中的 argparse 作为字符串
Parsing a list of IPs to argparse in python as string
我想执行一个 python 脚本来处理多个 IP 地址。这些地址可以通过命令行给出。
我使用以下命令进行解析:
parser.add_argument('--IP',dest='Adresses',help='some Ips',
default=['192.168.2.15','192.168.2.3'],type=list,nargs='+')
但是,当我通过如下命令 运行 脚本时:
python script.py --IP 192.168.2.15,192.168.2.3
它在每个字符后拆分字符串,如果我使用 space 而不是逗号,则会发生相同的行为,所以如果我打印出来,会发生以下输出
[['1', '9', '2', '.', '1', '6', '8', '.', '2', '.', '1', '5'], ['1',
'9', '2', '.', '1', '6', '8', '.', '2', '.', '3']]
我渴望拥有的是:
['192.168.2.15','192.168.2.3']
如默认参数所述
所以有两件事我没有在这里工作:
- 如何在一个参数下将多个字符串解析为 argparse,以便它在列表中分开
- 如何停止按字符拆分
感谢您的帮助
您想要的是键入 str
(默认值),仅包含 nargs=+
,然后将地址作为真实的、单独的参数提供给进程。
所以:
parser.add_argument('--IP', dest='Adresses', help='some Ips',
default=['192.168.2.15','192.168.2.3'], nargs='+')
使用两个参数调用时将产生以下结果:
parser.parse_args(['--IP', '123.45', '123.34'])
Namespace(Adresses=['123.45', '123.34'])
这将转换为以下命令行调用:
python script.py --IP 123.45 123.34
这是使用 nargs=+
的预期方式,其中 type
参数定义每个列表元素的元素类型。
如果你真的想使用 IP1,IP2
格式,你需要提供一个自定义检查函数,如图 here,然后需要使用字符串操作手动拆分输入,包括您当时必须处理的所有极端情况,这些情况在使用建议的方式时由 argparse
自动处理。
我想执行一个 python 脚本来处理多个 IP 地址。这些地址可以通过命令行给出。
我使用以下命令进行解析:
parser.add_argument('--IP',dest='Adresses',help='some Ips',
default=['192.168.2.15','192.168.2.3'],type=list,nargs='+')
但是,当我通过如下命令 运行 脚本时:
python script.py --IP 192.168.2.15,192.168.2.3
它在每个字符后拆分字符串,如果我使用 space 而不是逗号,则会发生相同的行为,所以如果我打印出来,会发生以下输出
[['1', '9', '2', '.', '1', '6', '8', '.', '2', '.', '1', '5'], ['1', '9', '2', '.', '1', '6', '8', '.', '2', '.', '3']]
我渴望拥有的是:
['192.168.2.15','192.168.2.3']
如默认参数所述
所以有两件事我没有在这里工作:
- 如何在一个参数下将多个字符串解析为 argparse,以便它在列表中分开
- 如何停止按字符拆分
感谢您的帮助
您想要的是键入 str
(默认值),仅包含 nargs=+
,然后将地址作为真实的、单独的参数提供给进程。
所以:
parser.add_argument('--IP', dest='Adresses', help='some Ips',
default=['192.168.2.15','192.168.2.3'], nargs='+')
使用两个参数调用时将产生以下结果:
parser.parse_args(['--IP', '123.45', '123.34'])
Namespace(Adresses=['123.45', '123.34'])
这将转换为以下命令行调用:
python script.py --IP 123.45 123.34
这是使用 nargs=+
的预期方式,其中 type
参数定义每个列表元素的元素类型。
如果你真的想使用 IP1,IP2
格式,你需要提供一个自定义检查函数,如图 here,然后需要使用字符串操作手动拆分输入,包括您当时必须处理的所有极端情况,这些情况在使用建议的方式时由 argparse
自动处理。