Python argparse 无法识别的参数

Python argparse unrecognized arguments

我正在尝试使用 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

我应该如何更改我的代码才能在参数列表中使用“=”?

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

All command-line arguments present are gathered into a list.

当您调用您的程序时 没有 等号,所有三个 IP 地址都被视为 --allow_ips 参数的一部分;它们将在列表中可供您的程序使用。

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