为什么在 Python 中就地更换得如此之难?

共1个回答, 标签: python

我有一个非常大的 CSV 文件, 我想直接导入到 Po 为格尔与 COPY。为此, CSV 列标题需要匹配数据库列名称。因此, 我需要在非常大的文件的第一行上做一个简单的字符串替换。

有许多答案, 如何做到这一点, 如:

所有答案都意味着创建大型文件的副本或使用访问整个文件的文件系统级解决方案, 尽管只有第一行是相关的。这使得所有的解决方案都缓慢, 似乎过于过激。

让这项简单的工作如此艰难的根本原因是什么?是否与文件系统相关?还是 Python 特定?

第1个答案

根本原因是 .csv 文件是文本文件, 对文件的第一行进行更改意味着对文件的第一条 "记录" 的随机访问。但文本文件并没有真正的 "记录", 他们有行, 长度不相等。因此, 更改第一行意味着读取文件直到第一个回车, 将一些东西放在它的位置, 然后将文件中的所有其余数据向左移动 (如果替换较短), 如果替换时间较长, 则向右移动。要做到这一点, 你有两个选择。(1) 将整个文件读入内存中, 以便进行左移或右移。(2) 逐行读取文件并写出新的文件。

在最后添加东西很容易, 因为这并不涉及取代已经存在的东西。

相关问题

通过随机抽样其他列数据创建新列 如何使用熊猫获得包括每一个组合的计数 如何有效地展开矩阵的值与小块?