12345678910111213141516171819202122232425262728293031323334353637 |
- 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)
|