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

Reply via email to