Python中的Shell.BrowseForFolder,如何检索文件夹路径

时间:2016-09-02 17:23:48

标签: python activex comtypes

我有以下代码显示Windows文件夹选择窗口:

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

Microsoft doc没有说明如何检索(选定的)文件夹路径,无论如何,VB的网络上存在一个解决方案(例如here):

path = folder.Self.Path

此解决方案不会转换为comtypes,并且help(folder)不会显示任何Self属性,BrowseForFolder似乎会返回FOLDER类型,但{{1} }}是Self类型的属性,任何人都知道为什么?

1 个答案:

答案 0 :(得分: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)