我一直在尝试使用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行,复制没有问题,之后复制突然停止。任何帮助将不胜感激。
答案 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)
这将关闭文件,刷新缓冲区,然后您可以复制它。