2016-09-02 2 views
0

je le code suivant qui affiche la fenêtre de sélection de dossier Windows:Shell.BrowseForFolder en Python, comment récupérer le chemin du dossier

from comtypes.client import CreateObject 
shell = CreateObject("Shell.Application") 
folder = shell.BrowseForFolder(0, "Select a folder", 1) 

Le doc Microsoft ne dit rien sur la façon de récupérer (sélectionné) chemin du dossier, de toute façon, il existe une solution sur le net pour VB (par exemple here):

path = folder.Self.Path 

Cette solution ne se traduit pas comtypes, et help(folder) ne montrent aucune propriété Self, il semble que BrowseForFolder r eturns un type FOLDER, mais Self est une propriété de type FOLDER2, quelqu'un sait pourquoi?

+1

FWIW, il ne se traduit à 'win32com de pywin32 .client', en utilisant ce 'folder.Self.Path' renvoie le chemin, donc c'est peut-être une bizarrerie avec les types et nécessite une approche différente? – TessellatingHeckler

Répondre

0

Comme dit TessellatingHeckler ci-dessus, il fonctionne avec win32com:

import win32com.client 

shell = win32com.client.Dispatch("Shell.Application") 
folder = shell.BrowseForFolder(0, "Now browse...", 1) 
print(folder.Self.Path) 

Mais si vous voulez vraiment utiliser comtypes, voici une solution:

from comtypes.client import CreateObject 

shell = CreateObject("Shell.Application") 
folder = shell.BrowseForFolder(0, "Now browse...", 1) 
name = folder.Title 
for item in folder.ParentFolder.Items(): 
    if item.Name == name: 
     print(item.Path)