58 lines
1.2 KiB
Python
58 lines
1.2 KiB
Python
import win32api
|
|
import win32file
|
|
|
|
|
|
def ProgressRoutine(
|
|
TotalFileSize,
|
|
TotalBytesTransferred,
|
|
StreamSize,
|
|
StreamBytesTransferred,
|
|
StreamNumber,
|
|
CallbackReason,
|
|
SourceFile,
|
|
DestinationFile,
|
|
Data,
|
|
):
|
|
print(Data)
|
|
print(
|
|
TotalFileSize,
|
|
TotalBytesTransferred,
|
|
StreamSize,
|
|
StreamBytesTransferred,
|
|
StreamNumber,
|
|
CallbackReason,
|
|
SourceFile,
|
|
DestinationFile,
|
|
)
|
|
##if TotalBytesTransferred > 100000:
|
|
## return win32file.PROGRESS_STOP
|
|
return win32file.PROGRESS_CONTINUE
|
|
|
|
|
|
temp_dir = win32api.GetTempPath()
|
|
fsrc = win32api.GetTempFileName(temp_dir, "cfe")[0]
|
|
fdst = win32api.GetTempFileName(temp_dir, "cfe")[0]
|
|
print(fsrc, fdst)
|
|
|
|
f = open(fsrc, "w")
|
|
f.write("xxxxxxxxxxxxxxxx\n" * 32768)
|
|
f.close()
|
|
## add a couple of extra data streams
|
|
f = open(fsrc + ":stream_y", "w")
|
|
f.write("yyyyyyyyyyyyyyyy\n" * 32768)
|
|
f.close()
|
|
f = open(fsrc + ":stream_z", "w")
|
|
f.write("zzzzzzzzzzzzzzzz\n" * 32768)
|
|
f.close()
|
|
|
|
operation_desc = "Copying " + fsrc + " to " + fdst
|
|
win32file.CopyFileEx(
|
|
fsrc,
|
|
fdst,
|
|
ProgressRoutine,
|
|
Data=operation_desc,
|
|
Cancel=False,
|
|
CopyFlags=win32file.COPY_FILE_RESTARTABLE,
|
|
Transaction=None,
|
|
)
|