pywin32 programming error on Win7 with shell.SHGetDesktopFolder, desktop.BindToObject, desktop.GetDisplayNameOf

MRAB python at mrabarnett.plus.com
Fri Nov 8 18:51:52 CET 2013


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.



More information about the Python-list mailing list