38 lines
1.6 KiB
Python
38 lines
1.6 KiB
Python
|
from win32com.shell import shell, shellcon
|
||
|
import win32api
|
||
|
import os
|
||
|
|
||
|
def testSHFileOperation(file_cnt):
|
||
|
temp_dir=os.environ['temp']
|
||
|
orig_fnames=[win32api.GetTempFileName(temp_dir,'sfo')[0] for x in range(file_cnt)]
|
||
|
new_fnames=[os.path.join(temp_dir,'copy of '+os.path.split(orig_fnames[x])[1]) for x in range(file_cnt)]
|
||
|
|
||
|
pFrom='\0'.join(orig_fnames)
|
||
|
pTo='\0'.join(new_fnames)
|
||
|
|
||
|
shell.SHFileOperation((0, shellcon.FO_MOVE, pFrom, pTo, shellcon.FOF_MULTIDESTFILES|shellcon.FOF_NOCONFIRMATION))
|
||
|
for fname in orig_fnames:
|
||
|
assert not os.path.isfile(fname)
|
||
|
|
||
|
for fname in new_fnames:
|
||
|
assert os.path.isfile(fname)
|
||
|
shell.SHFileOperation((0, shellcon.FO_DELETE, fname, None, shellcon.FOF_NOCONFIRMATION|shellcon.FOF_NOERRORUI))
|
||
|
|
||
|
def testSHNAMEMAPPINGS(file_cnt):
|
||
|
## attemps to move a set of files to names that already exist, and generated filenames should be returned
|
||
|
## as a sequence of 2-tuples created from SHNAMEMAPPINGS handle
|
||
|
temp_dir=os.environ['temp']
|
||
|
orig_fnames=[win32api.GetTempFileName(temp_dir,'sfo')[0] for x in range(file_cnt)]
|
||
|
new_fnames=[win32api.GetTempFileName(temp_dir,'sfo')[0] for x in range(file_cnt)]
|
||
|
pFrom='\0'.join(orig_fnames)
|
||
|
pTo='\0'.join(new_fnames)
|
||
|
rc, banyaborted, NameMappings=shell.SHFileOperation((0, shellcon.FO_MOVE, pFrom, pTo,
|
||
|
shellcon.FOF_MULTIDESTFILES|shellcon.FOF_NOCONFIRMATION|shellcon.FOF_RENAMEONCOLLISION|shellcon.FOF_WANTMAPPINGHANDLE))
|
||
|
|
||
|
for old_fname, new_fname in NameMappings:
|
||
|
print('Old:',old_fname, 'New:', new_fname)
|
||
|
assert len(NameMappings)==file_cnt
|
||
|
testSHFileOperation(10)
|
||
|
testSHFileOperation(1)
|
||
|
testSHNAMEMAPPINGS(5)
|