你好我的optparse python有问题。
它是关于optparse的默认选项值i表示为十六进制,但是当转换为int或long时,它不起作用,如optparse python所定义。
http://docs.python.org/library/optparse.html#standard-option-types
这是我的一小段代码:
parser.add_option("-o", "--offset",
dest="offset_pattern",
default=0x41306141,
type="long",
action="store",
metavar="HEX",
help="define the offset will be found [default : %default]")
但它仍然给我一个像这样的错误,即使我使用int或long作为数据类型
Traceback (most recent call last):
File "./pattern.py", line 155, in <module>
main()
File "./pattern.py", line 151, in main
proxyengine.parseoption()
File "./pattern.py", line 132, in parseoption
(options, args) = parser.parse_args()
File "/usr/lib/python2.6/optparse.py", line 1365, in parse_args
values = self.get_default_values()
File "/usr/lib/python2.6/optparse.py", line 1310, in get_default_values
defaults[option.dest] = option.check_value(opt_str, default)
File "/usr/lib/python2.6/optparse.py", line 756, in check_value
return checker(self, opt, value)
File "/usr/lib/python2.6/optparse.py", line 416, in check_builtin
_("option %s: invalid %s value: %r") % (opt, what, value))
optparse.OptionValueError: option --offset: invalid long integer value: 'buff'
和这个
Traceback (most recent call last):
File "./pattern.py", line 155, in <module>
main()
File "./pattern.py", line 151, in main
proxyengine.parseoption()
File "./pattern.py", line 132, in parseoption
(options, args) = parser.parse_args()
File "/usr/lib/python2.6/optparse.py", line 1365, in parse_args
values = self.get_default_values()
File "/usr/lib/python2.6/optparse.py", line 1310, in get_default_values
defaults[option.dest] = option.check_value(opt_str, default)
File "/usr/lib/python2.6/optparse.py", line 756, in check_value
return checker(self, opt, value)
File "/usr/lib/python2.6/optparse.py", line 416, in check_builtin
_("option %s: invalid %s value: %r") % (opt, what, value))
optparse.OptionValueError: option --offset: invalid integer value: 'buff'
任何帮助? 谢谢, 枪。
[编辑] 我已删除此代码,该程序正常工作
parser.add_option("-n", "--variable",
dest="offset_pattern",
default="buff",
type="string",
action="store",
metavar="STR",
help="define variable buffer name will be create [default : %default]")
为什么我必须删除工作程序的代码?
答案 0 :(得分:3)
您有长整数参数--offset
和字符串参数--variable
到达同一目的地(offset_pattern
)。显然这会混淆optparse,它试图将字符串参数的默认值应用于long参数并导致异常。
对于具有不同类型和默认值的两个选项,无论如何都无法转到同一目的地。更改其中一个选项的目的地将解决问题。