我发现我可以节省空间\加快CSV文件的读取速度。
使用我之前问题的答案 How do I create a CSV file from database in Python?
打开'wb'
w = csv.writer(open(Fn,'wb'),dialect='excel')
如何打开目录中的所有文件并保存所有与起始名称相同的文件,并使用“wb”重新格式化所有文件。我想将所有CSV转换为二进制CSV。
答案 0 :(得分:4)
您无法“动态覆盖文件”。您有两种选择:
如果文件足够小(小于可用RAM的数量)
一个舒适的边距),只是循环它们(os.listdir
进行循环
容易,或os.walk
如果你想抓住整个子目录树,
不只是一个目录),而且每个目录首先在内存中读取,然后
覆盖磁盘上的副本。
否则,循环遍历它们,并且每次都写入新文件(例如,通过
将.new
附加到名称上),然后将新文件移到旧文件上。这个
更安全(没有内存不足的风险,没有损坏文件的风险,如果
计算机崩溃但更复杂。
那么,是你的情况:足够小的文件(以及防止计算机和磁盘崩溃的备份),在这种情况下我可以展示简单的代码;或巨大的多GB文件 - 在这种情况下,它必须是复杂的代码?请告诉我们!