当我运行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)

最佳答案

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

option = parser.parse_args()

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

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

关于python - python argparse : unrecognized arguments,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17118999/

10-12 20:10
查看更多