我正在使用带有Python 2.7.x的argparse,并且在添加到默认参数列表时遇到了一些麻烦。相关代码如下所示:
parser = ArgumentParser(...)
parser.add_argument('--project-list', action='append', dest='project_list',
nargs='*', default=['AAA', 'BBB'])
# ...
args = parser.parse_args()
print args.project_list
在调用时打印以下内容:
$ python program.py --project-list CCC # --> project_list=['AAA', 'BBB', ['CCC']]
$ python program.py --project-list CCC DDD # --> project_list=['AAA', 'BBB', ['CCC', 'DDD']]
但是,我希望该计划要做的事情如下所示:
$ python program.py --project-list CCC # --> project_list=['AAA', 'BBB', 'CCC']
$ python program.py --project-list CCC DDD # --> project_list=['AAA', 'BBB', 'CCC', 'DDD']
从我到目前为止发现的情况来看,似乎nargs
参数强制生成一个列表,然后附加(不知道为什么?)。
其他一些解决方案,例如传递type=str
或type=construct_project_list
(这是一个返回'有效'列表的函数)也无法正常工作......
提前感谢您提供的任何帮助!