Cristiano Paris
Cristiano Paris

Reputation: 1856

Copying files with Python under Windows

I'm trying to copy files inside a Python script using the following code:

inf,outf = open(ifn,"r"), open(ofn,"w")
outf.write(inf.read())
inf.close()
outf.close()

This works perfectly unedr OSX (and other UNIX flavors I suspect) but fails under Windows. Basically, the read() call returns far less bytes than the actual file size (which are around 10KB in length) hence causing the write truncate the output file.

The description of the read() method says that "If the size argument is negative or omitted, read all data until EOF is reached" so I expect the above code to work under any environment, having Python shielding my code from OSs quirks.

So, what's the point? Now, I resorted to shutil.copyfile, which suits my need, and it works. I'm using Python 2.6.5

Thank you all.

Upvotes: 6

Views: 1559

Answers (1)

nmichaels
nmichaels

Reputation: 51039

shutil is a better way to copy files anyway, but you need to open binary files in binary mode on Windows. It matters there. open(fname, 'rb')

Upvotes: 3

Related Questions