Optparse of python



我是python的optparse新手,并尝试了以下方法:

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

我不太了解位置论证错误。谁能告诉我我错在哪里?

查看文档:

使用callback时,您提供一个用于处理传入参数的函数,该函数由四个参数调用:option, opt_str, value, parser

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.