2016-11-22 133 views
0

我正在写一个python脚本,它导入csv格式的多个输入数据文件并绘制统计图。但是,我一直在得到一个我无法弄清楚的错误。Python:“IOError:C not found”

任何建议将不胜感激。

下面的代码

import numpy as np 
import matplotlib 
import Tkinter 
matplotlib.use('TkAgg') 
from matplotlib import pyplot as plt 
from matplotlib import gridspec 
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg 
from Tkinter import Frame,Button,Canvas, Scrollbar, Tk, Checkbutton, W,E,N,S, VERTICAL, Y, BOTH, FALSE, TRUE, RIGHT, LEFT, Label, StringVar,IntVar 
from tkFileDialog import askopenfilename, askopenfilenames 
from tkMessageBox import askokcancel, showwarning 
import sys 


class MyGuiPlot(Frame): 

    def open_csv(self): # open file + control defaultextension of it 
     fname = askopenfilenames(defaultextension='.csv', 
        filetypes=[('CSV file','*.csv')]) 
     if fname: 

      self.length = len(fname) 
      self.get_data_multi(fname)    


    def get_data_multi(self, fname): 
     self.fname = fname 

     # button_show_all = Button(self.root, text='Show all', command = lambda d = dataset, vars_all = vars_all,v=vars: self.var_states(v,dataset,vars_all)) 
     # button_show_all.grid(row = len(fname)+1, column=0, sticky = W) 


     check_frame = Frame(self.root) 
     check_frame.grid(row=1,columnspan=12,sticky=W) 
     position = 0 
     vars_all = [] 
     for data in range(len(fname)): 
      j=0 
      x=0 
      print(data) 
      vars = [] 
      #position = data*len(fname) 
      dataset = np.genfromtxt(self.fname[data], dtype = float, delimiter = ',', names = True) 
      file_name = Label(check_frame, text='DATASET{0} => {1}'.format(data,self.fname[data])) 
      button_go = Button(check_frame, text= 'GO!', command = lambda dataset = dataset, v=vars: self.var_states(v,dataset)) 
      file_name.grid(row=position,column=0,columnspan=12, sticky=W) 
      button_go.grid(row=position+3,columnspan=2, sticky=W) 

      for _ in dataset.dtype.names: # creating checkboxes 
       var_ = StringVar() 
       if _.startswith('x'): 

        ch_btn = Checkbutton(check_frame, text='{}'.format(str(data)+_), variable=var_, onvalue=str(data)+':'+_) 
        ch_btn.deselect() 
        ch_btn.grid(row=position+2,column=x, sticky=W) 
        x+=1 

        vars.append(var_) 
        vars_all.append(var_) 
       else: 
        ch_btn = Checkbutton(check_frame, text='{}'.format(str(data)+_), variable=var_, onvalue=str(data)+':'+_) 
        ch_btn.deselect() 
        ch_btn.grid(row=position+1,column=j, sticky=W) 
        vars.append(var_) 
        j+=1 
        vars_all.append(var_) 
      if len(fname) ==2:position +=len(fname)+2 
      else:position +=len(fname)+1 
     #print(vars_all) 
     button_show_all = Button(self.root, text='Show all', command = lambda id=0: self.var_states(dataset = dataset,vars_all=vars_all)) 
     button_show_all.grid(row = len(fname)+1, column=0, sticky = W) 

此相关的部分的片段是我得到的错误:

Error

+4

而不是发布所有的代码和图像,你应该发布一个小程序来演示问题(提示:只有当你调用genfromtxt()时你有问题 - 你可以将这一行隔离成一个程序,显示你的问题)。然后,您可以将图像替换为错误文本本身的副本。 –

+0

尤其请参阅https://stackoverflow.com/help/mcve。通过在发布的代码中保留'askopenfilenames',我们无法确定您实际输入的内容。回溯表明你输入'C'并且没有名为'C'的文件。我也建议升级到目前的2.7.12。 –

+0

你有问题符合'dataset = ...'所以使用'print()'来查看你在这行中使用的变量print(data,self.fname,self.fname [data]) ' - 我想你有'self.fname'文件的路径,并且你使用'self.fname [data]'获得第一个字符' – furas

回答

0

你必须与dataset = ...线的问题,所以使用print()看什么你有你在这条线上使用的变量print(data, self.fname, self.fname[data])

I th墨你有路径self.fname到文件和您使用self.fname[data]得到第一个字符,你在np.genfromtxt()

使用单个字符的名称可以使用Windows,以便完整路径与C:\和第一个字符开始被C
,现在你看到的消息C not found