使用 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 调用函数的主要内容,如果未能解决你的问题,请参考以下文章

python——optparse模块

将 optparse 转换为 argparse

Python 命令行参数解析: optparse 模块

(js)使用new对函数进行构造调用

C语言函数的运用及调用

Android使用JNI,C++调用JAVA代码,能找到JAVA的函数无法调用?