使用 optparse 调用函数
Posted
技术标签:
【中文标题】使用 optparse 调用函数【英文标题】:Use optparse to call a function 【发布时间】:2018-07-23 03:07:50 【问题描述】:如何?我不想使用 argparse。 这是我的代码:
from optparse import OptionParser
def print_stuff():
a = "Hello Word"
print a
parser = OptionParser()
parser.add_option("-c",
action = "callback",
callback = print_stuff()
)
(options, args) = parser.parse_args()
但它显示了一个错误:
optparse.OptionError: option -c: callback not callable: None
怎么办?
如果我想做什么:
from optparse import OptionParser
def print_stuff(a):
a = "Hello Word"
return a
parser = OptionParser()
parser.add_option("-c",
action = "callback",
callback = print_stuff()
)
(options, args) = parser.parse_args()
【问题讨论】:
去掉括号:callback = print_stuff
或者你正在调用函数
有效和无效
【参考方案1】:
你想要
callback = print_stuff
没有括号。包括括号调用函数,并将回调设置为结果(字符串“Hello Word”),这是不可调用的。没有括号,您指的是函数本身。
【讨论】:
不工作显示以下错误self.callback(self, opt, value, parser, *args, **kwargs) TypeError: print_stuff() takes no arguments (4 given)
代码:from optparse import OptionParser def print_stuff(): a = "there" print a parser = OptionParser() parser.add_option("-c", action = "callback", callback = print_stuff ) args = ["-c"] (options, args) = parser.parse_args(args)
这意味着它确实有效——它现在正在尝试调用该函数。您现在遇到了另一种问题,即您的回调没有接受足够的参数。 optparse 文档提到所有回调必须至少占用 4 个,并对其进行了描述:docs.python.org/2/library/…以上是关于使用 optparse 调用函数的主要内容,如果未能解决你的问题,请参考以下文章