[DEBUG] python寫檔案時print漏掉整行資料
阿新 • • 發佈:2020-07-28
問題描述
我有下面一段程式碼:
out_f = open("test.txt","w") d = {"我是一個詞典":"我有很多資料但是我不想寫"} for trans,oid in d.items(): # 資料庫配置語句省略 # ... sql = 'insert into table_a(p, a_id, created, p_id) values(\"%s\",999,now(),(select id from table_b where name=\"%s\"));'%(trans, oid) print(sql + "\n") out_f.write(sql + "\n") out_f.close()
d大概有175個鍵值對,print到控制檯確實有175條,但寫出到檔案test.txt(程式碼執行前無此檔案),確只有81條。整段程式碼沒有報錯,寫出到檔案直接省略了94條。
解決辦法
在使用檔案操作模式w時,其實要考慮緩衝區?前94條,可能直接被沖掉了,並沒有儲存到檔案中。只要換成a模式,追加式寫,則全部記錄可以寫出。
out_f = open("test.txt","a")
其實包括with open(“test.txt”,“w”) as file,再用print(內容,file=file),這樣寫出的時候,一樣也會因為檔案操作模式問題,導致前面多條資料無法記錄。