我是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
.