我是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
我不太明白关于位置参数的错误。谁能告诉我,我错在哪里?
查看 文件:
当使用 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
.