python的Optparse
我是python的optparse新手,尝试了以下方法:python的Optparse,python,optparse,Python,Optparse,我是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() 我在终端中键
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
回溯(最近一次呼叫最后一次):
文件“firstparse.py”,第15行,在
(options,args)=parser.parse_args()
parse_args中的文件“/usr/lib/python3.5/optparse.py”,第1386行
停止=自身。\处理\参数(大、小、值)
文件“/usr/lib/python3.5/optparse.py”,第1430行,在进程参数中
自我评估过程短期选择(风险调整、价值)
文件“/usr/lib/python3.5/optparse.py”,第1535行,在“进程”中
option.process(opt、value、value、self)
文件“/usr/lib/python3.5/optparse.py”,第784行,正在处理中
self.action、self.dest、opt、value、value、parser)
文件“/usr/lib/python3.5/optparse.py”,第804行,采取行动
回调(self、opt、value、解析器、*args、**kwargs)
TypeError:plot()接受0个位置参数,但提供了4个
我不太了解位置参数错误。谁能告诉我哪里错了吗?请查看:
使用回调
时,您提供了一个用于处理传入参数的函数,该函数用四个参数调用:选项、opt_str、值、解析器
选项
是调用回调的选项实例
opt_str
是否在触发回调的命令行上看到选项字符串
值
此选项的参数是否显示在命令行上
解析器
OptionParser实例是否驱动了整个过程,主要是因为您可以通过其实例属性访问其他一些有趣的数据
实际上,您正试图通过plot
函数将参数从命令行处理为其值
我怀疑您正试图选择从命令行运行操作(如绘图
),因此可能更像:
parser=ArgumentParser()
parser.add_argument("-p", "--plot", action="store_true")
args = parser.parse_args()
if args.plot is True:
plot()
注意:
optpasse
从3.2开始就被弃用了,您现在应该使用argparse
对于刚才问题的不完整性造成的混乱表示抱歉。我对问题进行了编辑,以便更好地理解它。