用Python读/写CSV作为二进制文件

时间:2010-09-22 21:50:24

标签: python file-io csv

我发现我可以节省空间\加快CSV文件的读取速度。

使用我之前问题的答案 How do I create a CSV file from database in Python?

打开'wb'

  w = csv.writer(open(Fn,'wb'),dialect='excel')

如何打开目录中的所有文件并保存所有与起始名称相同的文件,并使用“wb”重新格式化所有文件。我想将所有CSV转换为二进制CSV。

1 个答案:

答案 0 :(得分:4)

您无法“动态覆盖文件”。您有两种选择:

  1. 如果文件足够小(小于可用RAM的数量) 一个舒适的边距),只是循环它们(os.listdir进行循环 容易,或os.walk如果你想抓住整个子目录树, 不只是一个目录),而且每个目录首先在内存中读取,然后 覆盖磁盘上的副本。

  2. 否则,循环遍历它们,并且每次都写入新文件(例如,通过 将.new附加到名称上),然后将新文件移到旧文件上。这个 更安全(没有内存不足的风险,没有损坏文件的风险,如果 计算机崩溃但更复杂。

  3. 那么,你的情况:足够小的文件(以及防止计算机和磁盘崩溃的备份),在这种情况下我可以展示简单的代码;或巨大的多GB文件 - 在这种情况下,它必须是复杂的代码?请告诉我们!