【发布时间】:2015-12-11 13:54:13
【问题描述】:
我正在使用argparse 来解析 Python 命令行,它应该看起来像这样:
python script_name.py --sdks=first, second
我的脚本如下所示:
sdk_choises = ['aio','sw']
parser = argparse.ArgumentParser(description='Blah blah')
parser.add_argument('--sdks', action='append', nargs='+', required=True, help='specifies target SDK(s)')
args = parser.parse_args()
if 'aio' in args.sdks:
# do something with aio
if 'sw' in args.sdks:
# do something with sw
当我执行时:
python script_name.py --sdks=aio, sw我收到错误:
"usage: script.py [-h] --sdks SDKS [SDKS ...]
build.py: error: unrecognized arguments: sw"
我希望能够选择一个或所有选项:
python script_name.py --sdks=first
python script_name.py --sdks=second
python script_name.py --sdks=first, second
我哪里做错了?
【问题讨论】:
-
你当然要去掉逗号:
python script_name.py --sdks aio sw -
不带逗号的错误是一样的。分隔符是如何指定的?是空格还是逗号?
-
我认为这取决于你的shell,但分隔符通常是''。我刚刚测试了你的代码(ubuntu 14.04.3 上的 python 2.7.6),对我来说没问题:/ 错误必须位于 build.py 中
-
我运行
python test.py --sdks aio, sw,打印args给Namespace(sdks=[['aio,', 'sw']])