我正在尝试使用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
我应该如何更改我的代码' ='可以在参数列表中使用吗?
答案 0 :(得分:4)
根据argparse documentation,在*
参数中传递nargs
意味着
存在的所有命令行参数都会收集到列表中。
当您调用程序而不使用等号时,所有三个IP地址都被视为--allow_ips
参数的一部分;它们将以列表的形式提供给您的程序。
使用等号调用程序时,只有第一个IP地址被视为--allow_ips
参数的一部分。 argparse
然后尝试解析第二个和第三个IP地址。但它不能,因为你的程序不采取任何位置参数。所以argparse
会引发异常。