我正在尝试制作一个程序,用0-9范围更新csv行,这将是ID号。因此,在搜索到ID号后,它会提示用户输入替换值,如下面此代码的replace
部分所示。由于csv是逗号分隔的,我用逗号连接字符串,因此它会在条形图上正确排列。但问题是。这个错误:IOError: File not open for reading
我在使用循环之前做了line.readlines()。顺便提一下,这是代码。
def update_thing():
stud_ID = str(ID_num.get())
stud_name = str(name.get())
stud_course = str(Crs.get())
stud_year = str(Yr.get())
searchID = str(sID_num.get())
filename = str(files.get())
replace = stud_ID +','+ stud_name +','+ stud_course +','+ stud_year
empty = []
with open(filename, 'wb') as file:
Swriter = csv.writer(file, delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL)
file.readlines()
for row in file:
if row[0:9] == searchID:
file.writerow([empty])
file.writerow([replace])
msg = Label(upd_win, text="Updated Successful", font="fixedsys 12 bold").place(x=3,y=120)
if not row[0:9] == searchID:
msg1 = Label(upd_win, text="Update Failed", font="fixedsys 12 bold").place(x=3,y=120)
非常感谢你提供任何帮助。
答案 0 :(得分:0)
故障在
行with open(filename, 'wb') as file:
作为documented,open(filename, 'wb')
会将文件截断为0字节,即删除其所有内容。另外,它将以只写方式打开。
而是以模式'r+b'
打开文件。这允许您进行读写,并且文件在打开时不会被截断。