Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python的Optparse_Python_Optparse - Fatal编程技术网

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() 我在终端中键

我是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
回溯(最近一次呼叫最后一次):
文件“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

对于刚才问题的不完整性造成的混乱表示抱歉。我对问题进行了编辑,以便更好地理解它。