Python - IOError:文件未打开以供阅读

时间:2017-09-09 11:17:00

标签: python csv

我正在尝试制作一个程序,用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)

非常感谢你提供任何帮助。

1 个答案:

答案 0 :(得分:0)

故障在

with open(filename, 'wb') as file:

作为documentedopen(filename, 'wb') 会将文件截断为0字节,即删除其所有内容。另外,它将以只写方式打开。

而是以模式'r+b'打开文件。这允许您进行读写,并且文件在打开时不会被截断。