2011-05-18 53 views
0

下面创建环路仅仅是打开一个.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() 
+0

我假设这是python。 – Mel 2011-05-18 00:30:34

回答

1

Readlines将整个文件读入内存。这样做是为了一次读取一行文件。

for line in f: 
    L.append(line) 

您不需要在第二个循环中使用xrange。你可以直接在数组上循环。您错误地关闭了循环内的文件。尝试:

for line in L: 
    f1.write(line) 
f1.close() 

编辑

伊格纳西奥提供一个更好的解决问题的方法,但在一般情况下,你应该用我的解决方案用于遍历文件中的行。

3

是的,不要这样做。打开新文件,写出标题,使用shutil.copyfileobj()复制内容,然后重命名。

+0

+1,这个问题比我的更好的解决方案。但是不足以阻止OP不正确地使用readline。 – mikerobi 2011-05-18 00:35:23

相关问题