123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- import os
-
- import win32api
- from win32com.shell import shell, shellcon
-
-
- 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)
|