在python中将IP列表解析为argparse作为字符串
我想执行一个python脚本,该脚本使用多个IP地址执行某些操作。这些地址可以通过commad行给出 我使用以下命令进行解析:在python中将IP列表解析为argparse作为字符串,python,string,argparse,Python,String,Argparse,我想执行一个python脚本,该脚本使用多个IP地址执行某些操作。这些地址可以通过commad行给出 我使用以下命令进行解析: 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
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
它在每个字符后分割字符串,如果我使用空格而不是逗号,则会出现相同的行为,因此如果我打印出来,则会出现以下输出
[1]、[9]、[2]、[1]、[6]、[8]、[2]、[1]、[5]、[1]、[,
“9”、“2”、“8”、“1”、“6”、“8”、“2”、“3”]]
我想要的是:
['192.168.2.15','192.168.2.3']
如默认参数中所述
所以有两件事我不能在这里工作:
感谢您的帮助您需要的是键入
str
(默认值),只需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
格式,则需要提供如图所示的自定义检查功能,然后需要使用字符串操作手动拆分输入,包括您必须处理的所有角落情况,当使用建议的方法时,argparse
会自动处理它们。您可以将它们重新连接到字符串中<代码>[“”。在ip中为x加入(x)]如果没有给出参数,并且它必须引用默认参数,那么这不会崩溃或更改吗?嗯,它可以工作,但我不知道为什么。谢谢:)
python script.py --IP 123.45 123.34