This recipe uses pywin32 in order to copy files making use of the win32file.FILE_FLAG_SEQUENTIAL_SCAN, which makes much more efficient use of the system cache (only a few megabytes are consumed instead of caching the whole file).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30  | import win32file
def copy_big_file(srcname, dstname):
	hin= win32file.CreateFile(
		srcname,
		win32file.GENERIC_READ,
		0, # win32file.FILE_SHARE_READ,
		None,
		win32file.OPEN_EXISTING,
		win32file.FILE_FLAG_SEQUENTIAL_SCAN,
		0)
##	print "type of hin=%r" % type(hin)
	hou= win32file.CreateFile(
		dstname,
		win32file.GENERIC_WRITE,
		0, # win32file.FILE_SHARE_READ,
		None,
		win32file.CREATE_ALWAYS,
		win32file.FILE_FLAG_SEQUENTIAL_SCAN,
		0)
	while 1:
		rc, buffer= win32file.ReadFile(hin, 65536)
		if not buffer: break
		if rc == 0:
			win32file.WriteFile(hou, buffer)
		else:
			print "rc=%d" % rc
			break
	hin.Close()
	hou.Close()
 | 
Copying files around won't swap out all your running applications from now on :)
Create a command line script or embed it in your GUI file browser.
Reference: http://support.microsoft.com/default.aspx?scid=kb;EN-US;98756
Download
Copy to clipboard
Not quite sure what's better than win32file.CopyFile. I've tried this function and did some benchmarks with a 5GB file. The win32file.CopyFile function was consistently 40-50% faster than this function and over 300% faster than shutil.copyfile.
In which situations is your function faster than win32file.CopyFile?