【发布时间】:2019-09-14 03:00:07
【问题描述】:
我正在使用argparse 处理程序的命令行参数,但解析器似乎接受了我尚未定义的参数。我已经设法用这个最小的例子重现了这个问题:
import argparse
def init():
parse_args()
exit()
def parse_args():
parser = argparse.ArgumentParser(add_help = False)
parser.add_argument("--kmers")
parser.parse_args()
if __name__ == '__main__':
init()
将此保存在文件中,例如 a.py 并运行:
python a.py --kmers /file.json
这会正常退出;令人惊讶的是,以下内容也可以在没有解析器抱怨的情况下工作:
python a.py --kmer /file.json
不应该是这种情况,因为--kmer 不是一个已定义的参数。但是运行它会引发错误:
python a.py --kmersss /file.json
`kmers.py: error: unrecognized arguments: --kmerss`
在我看来,解析器接受一个参数,只要它是已经定义的东西的唯一前缀。是这样吗?
【问题讨论】:
-
Yes.
-
如果你使用的是 Python 3.5+,看起来你可以turn it off