Improvements to copyfile(): open the files in binary mode, and close
them in a finally clause.
diff --git a/Lib/shutil.py b/Lib/shutil.py
index dba4ee1..1a5a6f1 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 @@
# 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
#