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