gpt4 book ai didi

python - 选项解析器与参数不匹配

转载 作者:行者123 更新时间:2023-12-01 09:22:49 25 4
gpt4 key购买 nike

我有一个简单的 python (v2.7) 脚本 (test.py)

#!/usr/bin/python

import sys
from optparse import OptionParser

def main():
parser = OptionParser()
parser.add_option("--files", dest="files",
metavar="FILES", default=None,
help="A file pattern matching ottcall logs.")
(options, args) = parser.parse_args()


print "FILES_PATTERN %s" % options.files

if not options.files:
parser.error("Files_pattern option is mandatory - Abort execution.")

return 0

if __name__ == "__main__":
sys.exit(main())

用户必须提供文件模式或文件名

如果缺少选项,则在命令行中运行脚本将返回错误:

python test.py
FILES_PATTERN None
Usage: test.py [options]

test.py: error: Files_pattern option is mandatory - Abort execution.

如果选项文件缺少一些字母(--fil 而不是 --files):

python test.py --fil "a_pattern_for_files"
FILES_PATTERN a_pattern_for_files

我认为我应该遇到如下错误

python test.py --fl "a_pattern_for_files"
Usage: test.py [options]

test.py: error: no such option: --fl

当我使用 --fil 而不是正确的参数 --files 时,为什么 OptionParser 没有收到错误?

我不仅没有收到错误,而且变量文件存储了值:a_pattern_for_files(打印出来)。

我期望参数文件具有值:无(默认),除非在命令行中--files存在

最佳答案

optparse 允许长选项的缩写形式。 --fil--files 的前缀,而不是程序支持的任何其他长选项的前缀,因此 --fil 被处理相当于 --files

文档中几乎没有提到这一点,并且没有选项可以将其关闭。 argparse 有一个 option关闭它,但仅限于 Python 3.5+。

关于python - 选项解析器与参数不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50684029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com