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)
此相關的部分的片段是我得到的錯誤:
而不是發佈所有的代碼和圖像,你應該發佈一個小程序來演示問題(提示:只有當你調用genfromtxt()時你有問題 - 你可以將這一行隔離成一個程序,顯示你的問題)。然後,您可以將圖像替換爲錯誤文本本身的副本。 –
尤其請參閱https://stackoverflow.com/help/mcve。通過在發佈的代碼中保留'askopenfilenames',我們無法確定您實際輸入的內容。回溯表明你輸入'C'並且沒有名爲'C'的文件。我也建議升級到目前的2.7.12。 –
你有問題符合'dataset = ...'所以使用'print()'來查看你在這行中使用的變量print(data,self.fname,self.fname [data]) ' - 我想你有'self.fname'文件的路徑,並且你使用'self.fname [data]'獲得第一個字符' – furas