从现有代码
问题描述:
下面创建环路仅仅是打开一个.csv文件,并在行插入头一码“0”从现有代码
我想要做的就是创建一个循环,这样我可以在一个点代码目录并循环遍历每个文件。目录中的每个文件都有2300万行,当我尝试写入循环时,我遇到了内存错误。下面的代码适用于单个文本文件。
import os
L = list()
f = open(in.txt, 'rb')
for line in f.readlines():
L.append(line)
L.insert(0,"x,y\n")
f.close()
f1 = open(in.txt, 'wb')
for line in xrange(len(L)):
f1.write(L[line])
f1.close()
答
Readlines将整个文件读入内存。这样做是为了一次读取一行文件。
for line in f:
L.append(line)
您不需要在第二个循环中使用xrange。你可以直接在数组上循环。您错误地关闭了循环内的文件。尝试:
for line in L:
f1.write(line)
f1.close()
编辑
伊格纳西奥提供一个更好的解决问题的方法,但在一般情况下,你应该用我的解决方案用于遍历文件中的行。
答
是的,不要这样做。打开新文件,写出标题,使用shutil.copyfileobj()
复制内容,然后重命名。
+0
+1,这个问题比我的更好的解决方案。但是不足以阻止OP不正确地使用readline。 – mikerobi 2011-05-18 00:35:23
我假设这是python。 – Mel 2011-05-18 00:30:34