【发布时间】:2015-07-06 21:54:37
【问题描述】:
我在我的 python 代码中创建了以下参数解析器。
parser = argparse.ArgumentParser()
parser.add_argument('projectPath')
parser.add_argument('-project')
parser.add_argument('-release')
parser.add_argument('--test', default=False, action='store_true')
args = parser.parse_args()
我正在按照以下方式执行我的程序。
myProgram.py /path/to/file -project super --test
如果我将上面的 sysntax 与
一起使用,它可以正常工作args = parser.parse_args()
但是,如果我使用 sys.argv 作为输入
args = parser.parse_args(sys.argv)
解析器突然对参数的顺序很挑剔,我得到了无法识别的参数错误。
usage: fbu.py [-h] [-project PROJECT] [-release RELEASE] [--test] projectPath
fbu.py: error: unrecognized arguments: /path/to/file
正如我从错误中看到的,也使用了 -h 参数。 path 参数必须是最后一个,并且错误在最后一个示例中是有意义的。 但是为什么它不关心第一个示例中的顺序?
编辑:我使用的是 python 3.4.3 版
【问题讨论】:
-
试试
parser.parse_args(sys.argv[1:]) -
sys.argv[0]用作默认的prog- 程序名称。
标签: python python-3.x argparse