python argparse:无法识别的参数

2024-05-19 16:10:34 发布

您现在位置:Python中文网/ 问答频道 /正文

当我运行parsePlotSens.py -s bw hehe时,它说hehe是一个无法识别的参数。但是,如果我运行parsePlotSens.py hehe -s bw,就可以了。理想情况下,我希望对这两种情况都有效。

有什么建议吗?以下是我的代码:

if __name__ == '__main__' :

    parser = argparse.ArgumentParser(prog='parsePlotSens');
    parser.add_argument('-s', '--sort', nargs =1, action = 'store', choices = ['mcs', 'bw'], default='mcs', help=sorthelp)
    parser.add_argument('filename', nargs ='+', action = 'store')
    option = parser.parse_args(sys.argv)

Tags: storepyaddparser参数情况actionargument
3条回答

此外,作为对unutbu答案的补充,以这种方式将参数存储在字典中可以简化测试:

args = vars(parser.parse_args())
print args

打印字典:

{'sort': ['bw'], 'filename': ['hehe']}

比如:

if args['sort'] == 'bw':
    # code here

...

你可以通过允许未知参数来解决这个问题

替换

args = parser.parse_args()

args, unknown = parser.parse_known_args()

不要将sys.argv作为参数传递给parse_args。只是使用

option = parser.parse_args()

如果您确实将sys.argv传递给parse_args,则脚本本身的路径或名称是sys.argv中的第一项,因此成为option.filename的值。然后hehe变成一个未知参数。

如果省略sys.argv,则parse_args按预期解析sys.argv

相关问题 更多 >