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