On 08/11/2013 03:30, iMath wrote:
When running the following code on WinXP , all is fine , -------------------------------------------------------------- from win32com.shell import shell def launch_file_explorer(path, files): folder_pidl = shell.SHILCreateFromPath(path,0)[0] desktop = shell.SHGetDesktopFolder() shell_folder = desktop.BindToObject(folder_pidl, None,shell.IID_IShellFolder) name_to_item_mapping = dict([(desktop.GetDisplayNameOf(item, 0), item) for item in shell_folder]) to_show = [] for file in files: if file not in name_to_item_mapping: raise Exception('File: "{}" not found in "{}"'.format(file, path)) to_show.append(name_to_item_mapping[file]) shell.SHOpenFolderAndSelectItems(folder_pidl, to_show, 0) import os p=r'E:\aa' print(os.listdir(p)) launch_file_explorer(p, os.listdir(p)) -------------------------------------------------------------- however ,when tested on Win7,I got the following error -------------------------------------------------------------- ['b1', 'b2', 't.txt'] Traceback (most recent call last): File "D:\g.py", line 21, in <module> launch_file_explorer(p, os.listdir(p)) File "D:\g.py", line 13, in launch_file_explorer raise Exception('File: "{}" not found in "{}"'.format(file, path)) Exception: File: "t.txt" not found in "E:\aa" -------------------------------------------------------------- I nearly have no experience on pywin32 programming ,the above code is googled,anyone can help me fix this error ?thanks in advance !
It's building a dict where the key is the result of desktop.GetDisplayNameOf(item, 0), and it's then not finding a given name in that dict. Try printing the keys to see what's there. It might be that desktop.GetDisplayNameOf(item, 0) returns different strings in Win7 from those in WinXP. -- https://mail.python.org/mailman/listinfo/python-list