2016-09-02 1 views
0

У меня есть следующий код, который отображает окно выбора папки Windows:Shell.BrowseForFolder в Python, как получить путь к папке

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

Док Microsoft ничего не говорит о том, как получить не сказать (выбранный) путь к папке, в любом случае, решение существует в сети для VB (например here):

path = folder.Self.Path 

Это решение не переводить comtypes и help(folder) не показывают Self собственности, кажется, что BrowseForFolder г eturns a FOLDER тип, но Self является собственностью FOLDER2 тип, любой знает почему?

+1

FWIW, он переводит к pywin32 в 'win32com .client', используя эту 'folder.Self.Path' возвращает путь, так что, может быть, это причуда с comtypes и нуждается в другом подходе? – TessellatingHeckler

ответ

0

Как сказал TessellatingHeckler выше, он работает с win32com:

import win32com.client 

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

Но если вы действительно хотите использовать comtypes, здесь обходной путь:

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) 
Смежные вопросы