pythonio

Copying a stream in Python


How do I transfer the contents of a stream to another in Python?

The trivial solution would be

output.write(input.read())

but that fails if the input file is larger than the available memory (or even infinitely large); and it doesn't work well when a partial copy is useful as well. Basically I'm looking for the equivalent of org.apache.commons.IOUtils.copy.


Solution

  • shutil.copyfile() and shutil.copyfileobj() for the rescue:

    shutil.copyfileobj(input, output)