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

标签 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行,复制没有问题,之后复制突然停止。任何帮助将不胜感激。

最佳答案

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

文件仍处于打开状态,因此 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)

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

关于python - python 中的文件复制在 50000 行后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22208811/

相关文章:

python - Python 中的多处理队列

python - 在字符串中查找子字符串,但仅当整个单词?

powershell - 将文件复制到远程桌面驱动器

r - 在保留原始文件信息(创建时间等)的同时复制文件

java - Java文件复制时出现异常

Python打开链接进入链接

python - 随机森林回归中的样本大小

python - 在python 2.7中同时多次运行脚本

c# - 将(多个)文件复制到多个位置

c - 使用什么来代替 sizeof(void)?