我在python文档中读到可以从命令行调用函数,所以我使用optparse
模块从函数返回一个大文本但我的代码不起作用!我想我已经做好了一切。
def HelpDoc():
return """ SOME
HUGE
TEXT """
parser = OptionParser(usage="%prog ConfigFile")
parser.add_option("-g", "--guide", action = "callback", callback=HelpDoc(), help = "Show help documentation")
(options,args) = parser.parse_args()
回溯
parser.add_option("-g", "--guide", action = "callback", callback=HelpDoc(), help = "Show help documentation")
File "/Python-2.7.2/lib/python2.7/optparse.py", line 1012, in add_option
option = self.option_class(*args, **kwargs)
File "/Python-2.7.2/lib/python2.7/optparse.py", line 577, in __init__
checker(self)
File "/Python-2.7.2/lib/python2.7/optparse.py", line 712, in _check_callback
"callback not callable: %r" % self.callback, self)
答案 0 :(得分:1)
HelpDoc()
是字符串,而不是回调函数,所以请改用callback=HelpDoc
,即:
parser.add_option("-g", "--guide", action = "callback", callback=HelpDoc, help = "Show help documentation")
这里的差异可以通过以下方式看出:
>>> type(HelpDoc())
str
>>> type(HelpDoc)
function
因此,这就是为什么投诉是回调对象不可调用的原因。字符串显然不能被称为函数。
但是,对选项回调还有一些进一步的要求,所以使用上面的修复程序,你只会收到另一个错误(参数太多)。有关详细信息和示例,请参阅:https://docs.python.org/2/library/optparse.html#optparse-option-callbacks
所以,它比那复杂一点。至少函数签名(接受的参数)必须是正确的。
(正如Shadow9043在评论中所说,optparse
已被弃用,请改用argparse
。)