python - Python argparse 接受未明确定义的参数
问题描述
我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`
在我看来,解析器接受一个参数,只要它是已经定义的东西的唯一前缀。是这样吗?
解决方案
通常情况下,人们会在发布问题几分钟后找到问题的答案。
此行为与默认allow_abbrev
设置为的解析器选项有关。True
启用此功能后,解析器将愉快地接受任何传递的参数,只要它是已定义参数的明确子字符串。
这以前在这里被报告为一个错误。
推荐阅读
- python - 在具有列平均值的列中填充 NaN 值
- python - 在 PyQt5 中显示 MathJax 闪烁和状态栏
- amazon-web-services - 如何在 lambda 函数运行时设置启动/停止 NAT 网关的作业
- proguard - Proguard 混淆 - 内存不足问题
- c++ - C++ 如何知道调用哪个“++”运算符?
- flutter - 让 wrap 占据全宽
- java - java-engine.eval("带方程的字符串"); 我想得到 BigDecimal 的输出
- python - PYthon 索引错误:Selenium / Web 驱动程序
- html - 希望 div 与屏幕右侧对齐。浮动:正确不起作用
- google-cloud-platform - 我们可以从云功能中运行 GCP VM 中的 jar