6

I want to copy a file then start writing the new file:

shutil.copyfile("largefile","newlargefile")
nwLrgFile=open("newlargefile",'a')
nwLrgFile.write("hello\n")

However, when I do the above hello will be written before the end of the file. What is the right way to make sure copyfile is done?

I looked on SO and other places but all the answers I saw said that shutil.copyfile blocks or locks and that it shouldn't be a problem. And yet, it is. Please help!

a113nw
  • 1,312
  • 1
  • 16
  • 26

1 Answers1

3

Try using copyfileobj directly instead:

with open('largefile', 'r') as f1, open('newlargefile', 'w') as f2:
    shutil.copyfileobj(f1, f2)
    f2.write('hello')
nneonneo
  • 171,345
  • 36
  • 312
  • 383