Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中将IP列表解析为argparse作为字符串_Python_String_Argparse - Fatal编程技术网

在python中将IP列表解析为argparse作为字符串

在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

我想执行一个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
它在每个字符后分割字符串,如果我使用空格而不是逗号,则会出现相同的行为,因此如果我打印出来,则会出现以下输出

[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']

如默认参数中所述

所以有两件事我不能在这里工作:

  • 如何将多个字符串解析为argparse,但在一个参数下,以便在列表中将其分开
  • 我怎样才能停止按角色拆分

  • 感谢您的帮助

    您需要的是键入
    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