我一直在尝试使用 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/