[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),这样写出的时候,一样也会因为文件操作模式问题,导致前面多条数据无法记录。  


  

posted @ 2020-07-28 14:39  陆离可  阅读(238)  评论(0编辑  收藏  举报