记一次append file数据写入不符合预期的排查过程

博主在使用Python导出数据到CSV文件时遇到一个问题,即写入的数据被后面的写入内容覆盖。经过排查,发现与Python的文件缓冲区大小(默认8192字节)有关。当写入字符串超过缓冲区大小时,文件指针未正确更新,导致数据覆盖。通过调用`f.tell()`来查看文件指针位置,意外解决了问题。最后,博主解释了8192字节与`open()`函数的缓冲参数关系,并建议在写入大量数据时计算好缓冲区大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

好久好久没写博客了,有两个原因,一个是有点懒散,另一个也是因为有点懒散。。。

背景

最近因为工作需要支援其他项目的工作,我被分配到的其中一个任务是导出db中一个表的部分数据写入到一个csv文件,由于公司规范问题(可能是因为表太大了),不能请sre和dba帮忙,因此需要自己写脚本来导出数据。
这个项目比较旧,是用python写的,导出数据到文件的逻辑也是使用python写的。

因为想一次多写点数据,写入的时候就直接写入了一段比较长的字符串;
同时为了下次执行程序能在上次停下来的地方继续跑,用的是文件追加写的模式。

问题

奇怪的问题出现了,后面写进去的数据居然覆盖到前面去了!
我想要的效果:

我得到的效果:

排查过程

先贴代码:
python版本是2.7,运行环境是linux centos 7.7

import csv

def test_append_file():
    lines = []
    for i in range(10000, 10700):
        lines.append([i, i+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值