【问题标题】:Use optparse to call a function使用 optparse 调用函数
【发布时间】:2018-07-23 03:07:50
【问题描述】:

如何使用 optparse 调用函数?我不想使用 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 或者你正在调用函数
  • 有效和无效

标签: python linux argparse python-2.6 optparse


【解决方案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/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-05
  • 1970-01-01
  • 2012-08-26
  • 1970-01-01
  • 2010-11-07
  • 2011-03-14
  • 1970-01-01
相关资源
最近更新 更多