From 277206b08e2c9476ac51a277c11e04a2c30d5a33 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 29 Apr 1997 13:08:15 +0000 Subject: [PATCH] Improvements to copyfile(): open the files in binary mode, and close them in a finally clause. --- Lib/shutil.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/Lib/shutil.py b/Lib/shutil.py index dba4ee161c5..1a5a6f1ccfa 100644 --- a/Lib/shutil.py +++ b/Lib/shutil.py @@ -1,4 +1,5 @@ # Module 'shutil' -- utility functions usable in a shell-like program +# XXX The copy*() functions here don't copy the data fork on Mac import os @@ -8,12 +9,21 @@ MODEBITS = 010000 # Lower 12 mode bits # Copy data from src to dst # def copyfile(src, dst): - fsrc = open(src, 'r') - fdst = open(dst, 'w') - while 1: - buf = fsrc.read(16*1024) - if not buf: break - fdst.write(buf) + fsrc = None + fdst = None + try: + fsrc = open(src, 'rb') + fdst = open(dst, 'wb') + while 1: + buf = fsrc.read(16*1024) + if not buf: + break + fdst.write(buf) + finally: + if fdst: + fdst.close() + if fsrc: + fsrc.close() # Copy mode bits from src to dst #