用Python以二进制方式读写CSV
我刚发现可以节省空间并加快读取CSV文件的速度。
这是我之前问题的答案,关于如何在Python中从数据库创建CSV文件的内容,链接在这里:如何在Python中从数据库创建CSV文件?
还有,打开文件时要用'wb'模式。
w = csv.writer(open(Fn,'wb'),dialect='excel')
我想知道怎么打开一个文件夹里的所有文件,并把这些文件都保存成以相同名字开头的文件,同时用'wb'模式来重新格式化所有文件。我猜是把所有的CSV文件转换成二进制格式的CSV文件。
1 个回答
4
你不能“实时覆盖一个文件”。你有两个选择:
如果文件小到可以放进内存里(比可用内存多出一些空间),你可以遍历这些文件(用
os.listdir
可以很方便地遍历,或者用os.walk
来遍历整个子目录树,而不仅仅是一个目录),然后先把每个文件读到内存中,再覆盖掉硬盘上的文件。如果文件太大,无法一次性放进内存,那就遍历这些文件,每次写入一个新文件(比如在文件名后加上
.new
),然后把新文件替换掉旧文件。这样做更安全(不会因为内存不够而出问题,也不会因为电脑崩溃而损坏文件),但会复杂一些。
那么,你的情况是什么呢?是小文件(并且有备份以防电脑或硬盘崩溃),这样的话我可以给你展示简单的代码;还是很大的多GB文件——那样的话就得用复杂的代码了?告诉我们吧!