python中的文件复制在50000行后停止

时间:2014-03-05 20:44:44

标签: python file-copying

我一直在尝试使用Python使用以下代码将文件复制到另一个文件。

为避免混淆,请注意,给出的片段位于循环内,该循环在aij [j]上执行循环。

import glob
import shutil 
for filename in glob.glob("dpd.*.txt"):

    print "File under process ", filename

    filedummy = filename + '_' + str(aij[j])

    with open(filename,'r') as infyle, open(filedummy,'w') as outfyle:

        for line in infyle:

            outfyle.write(line)

        srcfile = filedummy
        destfile = path_back + '/' + filedummy
        shutil.copy(srcfile,destfile)

问题:原始文件中的行数约为90000行。最多50026行,复制没有问题,之后复制突然停止。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:4)

这里的问题是你在临时文件关闭之前复制它。

文件仍处于打开状态,因此shutil.copy正在读取此时磁盘上的内容,而不是整个文件。其中一些仍然保留在缓冲区中。关闭文件时,这些缓冲区将刷新到磁盘。

所以只需将问题中代码的最后3行移出一级:

with open(filename,'r') as infyle, open(filedummy,'w') as outfyle:
    for line in infyle:
        outfyle.write(line)

srcfile = filedummy
destfile = path_back + '/' + filedummy
shutil.copy(srcfile,destfile)

这将关闭文件,刷新缓冲区,然后您可以复制它。