2016-11-22 52 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