報錯: ValueError: I/O operation on closed file
- ValueError: I/O operation on closed file。是指處理了已經被關閉的數據。一般是語句沒有對齊。當python的處理代碼不對齊的時候會出現這種情況。
- 使用with方法打開了文件,生成的文件操作實例在with語句之外是無效的,因為with語句之外文件已經關閉了。
報錯部分代碼:
class Maoyan(object): ... def run(self): response = self.get_data() datas = self.parse_data(response) self.save_data(datas) if __name__ == '__main__': ... with open('貓眼.csv', 'a', newline='', encoding="utf8") as f: csv_writer = csv.writer(f) csv_writer.writerow(head) maoyan = Maoyan() maoyan.run()
解決:
檢查了很多遍,因為已經確認了是縮進的問題,最后才發現最后兩行代碼也要縮進,因為調用的保存也要在with語句塊里能有效。
改成圖片里這樣就可以運行了!