错误:##
Tkinter回调中的异常
追踪(最近一次呼叫最后一次):
文件 " C:\用户\ HP- \应用程序数据\本地\程序\的Python \ Python35-32 \ lib中\ tkinter__init __ PY&#34 ;, 第1549行,致电 return self.func(* args)
文件" C:\ Users \ hp- \ Downloads \ pyguii.py",第120行,在combine_funcs中 建议()
文件" C:\ Users \ hp- \ Downloads \ pyguii.py",第114行,推荐 读者中的行:
文件 " C:\用户\ HP- \应用程序数据\本地\程序\的Python \ Python35-32 \ lib中\ csv.py&#34 ;, 第109行,下一步 self.fieldnames
文件 " C:\用户\ HP- \应用程序数据\本地\程序\的Python \ Python35-32 \ lib中\ csv.py&#34 ;, 第96行,在字段名中
self._fieldnames = next(self.reader) ValueError: I/O operation on closed file.
def getrate():
stem=tk.Toplevel(root)
a1=Label(stem,text='Which type of songs will you like to listen')
a1.grid(row=0,column=0)
var2 = IntVar()
dd1 = Radiobutton(stem, text="Hindi songs", variable=var2, value=1)
dd1.grid(row=1,column=1)
label = Label(stem)
dd2 = Radiobutton(stem, text="Punjabi songs", variable=var2, value=2)
dd2.grid(row=2,column=2)
label = Label(stem)
def getcat1():
gg2=var2.get()
fields.append(gg2)
with open(r'category.csv', 'a') as f:
writer = csv.writer(f)
writer.writerow(fields)
print(gg2)
def recommend():
with open('listsng.csv') as csvfile:
reader = csv.DictReader(csvfile)
#print (reader)
for row in reader:
if '2015' in row['Year'] and 'Hindi' in row['Category']:
print(row['Song Name'])
def combine_funcs():
getcat1()
recommend()
ee=Button(stem,text='Submit',command=combine_funcs)
ee.grid(row=10,column=2)
ee1=Button(stem,text='Skip',command='')
ee1.grid(row=10,column=4)
答案 0 :(得分:1)
在文件被打开的上下文之外关闭文件后,您正尝试访问reader
。将for
函数中的recommend
循环移至with
的上下文中,如下所示:
def recommend():
with open('listsng.csv') as csvfile:
reader = csv.DictReader(csvfile)
#print (reader)
for row in reader:
if '2015' in row['Year'] and 'Hindi' in row['Category']:
print(row['Song Name'])
Python中的with
语句创建了一个上下文,在这种情况下,为文件对象创建了一个上下文。离开with
上下文后,Python会关闭文件并进行一些清理。因此,必须在打开文件的上下文中执行与文件对象相关的所有操作。