python的Optparse

问题描述 投票:0回答:1

我是python的新手,我尝试了以下方法。

def plot():
    x=[1,2,3]
    y=[4,5,6]
    plt.plot(x,y)
    plt.savefig('trial.pdf')

parser=OptionParser()
parser.add_option("-p", "--plot", action="callback", callback=plot)
(options, args)=parser.parse_args()

我输入了 python3 parse.py -p 在终端中,它给出了。

Traceback (most recent call last):
  File "firstparse.py", line 15, in <module>
    (options, args)=parser.parse_args()
  File "/usr/lib/python3.5/optparse.py", line 1386, in parse_args
    stop = self._process_args(largs, rargs, values)
  File "/usr/lib/python3.5/optparse.py", line 1430, in _process_args
    self._process_short_opts(rargs, values)
  File "/usr/lib/python3.5/optparse.py", line 1535, in _process_short_opts
    option.process(opt, value, values, self)
  File "/usr/lib/python3.5/optparse.py", line 784, in process
    self.action, self.dest, opt, value, values, parser)
  File "/usr/lib/python3.5/optparse.py", line 804, in take_action
    self.callback(self, opt, value, parser, *args, **kwargs)
TypeError: plot() takes 0 positional arguments but 4 were given

我不太明白关于位置参数的错误。谁能告诉我,我错在哪里?

python argparse optparse
1个回答
0
投票

查看 文件:

当使用 callback,你提供了一个用于处理传入参数的函数,这个函数被调用时有四个参数。option, opt_str, value, parser

option

是调用回调的Option实例。

opt_str

是在命令行中看到的触发回调的选项字符串... ...

value

是在命令行上看到的这个选项的参数...

parser

是驱动整个事情的OptionParser实例,主要是有用的,因为你可以通过它的实例属性访问一些其他有趣的数据......

本质上,你是想把命令行的参数处理成它的值,并通过 plot 功能。

我怀疑你是想选择,行动(这样一个 plot)从命令行运行,所以也许更像。

parser=ArgumentParser()
parser.add_argument("-p", "--plot", action="store_true")
args = parser.parse_args()
if args.plot is True:
    plot()

注意: optparse 从3.2开始就不适用了,你现在应该使用的是 argparse.

© www.soinside.com 2019 - 2024. All rights reserved.