1. 程式人生 > 實用技巧 >[DEBUG] python寫檔案時print漏掉整行資料

[DEBUG] python寫檔案時print漏掉整行資料

問題描述

我有下面一段程式碼:

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),這樣寫出的時候,一樣也會因為檔案操作模式問題,導致前面多條資料無法記錄。