python - set_default 上的 OptionParser 错误

标签 python command-line-arguments

在使用 optparse 时,我遇到了这个错误,我无法弄清楚发生了什么,并且文档没有帮助我澄清为什么会发生这种情况。

代码:

formats = ['xml', 'json', 'yaml']
parser = optparse.OptionParser(usage = u, version = v)
parser.add_option('-s', '--src', dest = 'source_file', metavar = 'single source file')
parser.add_option('-f', '--format', dest = 'frmt', type = 'choice', choices = formats)
parser.add_option('-o', '--output', dest = 'output_file')

parser.set_default(frmt = 'xml', output_file = 'doc.xml')
opts, args = parser.parse_args()

gen_doc(opts.source_file, opts.frmt, opts.output_file)

错误:

$ python main.py -s a -f xml -o a
Traceback (most recent call last):
  File "main.py", line 35, in <module>
    main()
  File "main.py", line 29, in main
    parser.set_default(frmt = 'xml', output_file = 'doc.xml')
TypeError: set_default() got an unexpected keyword argument 'frmt'

据我所知,set_default 应该识别 add_option 上设置的实例成员。

有什么想法吗?

最佳答案

方法是set_defaults;注意复数。 set_default(单数)有两个参数;选项的名称及其值。

关于python - set_default 上的 OptionParser 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11500493/

相关文章:

python - 查找字符串中的特殊符号

python - Seaborn 线图高 CPU;与 matplotlib 相比非常慢

linux - 为命令行快速开发 GUI

C - Linux 上的一个简单的 shell - 命令的一些问题

python - 如果两个包共享相同的模块名称,您如何支持一个包?

python - 如何使用 python 列表理解/字典将每一列打印为唯一变量

Python 无法通过 Docker 连接到 Cassandra

c - 使用虚拟 shell 时,如何检测用户是否在程序和参数后输入 '&'?

python - 将 json 字符串传递给参数解析器 python

ruby - 在 Ruby 中解析 gem 样式命令行参数的最简单方法