请想象这样的情况:本地文件的图标显示在 GUI 中,右键单击该图标,弹出上下文菜单,其中包含选项:在资源管理器中显示文件。单击该选项,然后打开一个资源管理器窗口,其中选择了特定文件。很多编辑器都有这样的功能:在文件夹中显示或在资源管理器中显示
事实上,GUI是由PyQt构建的,我的第一个想法很简单,只需打开一个子进程并传递命令行即可:
资源管理器/选择,a_full_path_name
这种行为确实是我所需要的,但是当再次单击“在文件夹中显示”时,将打开一个新的资源管理器窗口,甚至旧的资源管理器窗口也存在!一个顽皮的男孩一口气点击“显示在文件夹中”几十次怎么样?所以我只需要一个窗口,如果有旧的窗口,只需将其提升到前面即可。
命令start/D a_path .
可能会让顽皮的男孩失望(运行它好几次,只有一个窗口。)但是,没有选项来突出显示选定的文件,因此也让我失望。 ..
如上所述,很多编辑器都有这样的“显示在文件夹中”功能, 但令我惊讶的是,PyCharm“在资源管理器中显示”将通过多次单击同一文件来打开多个窗口,以及CodeBlocks“打开包含文件夹”,但是程序员的记事本“打开包含的文件夹”总是只会打开同一个文件上的一个文件夹。(说实话,除了Windows记事本之外,我的电脑上只有3个编辑器:)
我的问题:
仅通过windows cmd就可以实现上述功能吗?
如果不能,有没有Python的方法来实现?
其实我在stackoverflow中发现了几个相关的问题,for example , 但我的问题没有解决,有人可以载我一程吗?
最佳答案
最后,一些好人引导我找到了答案。
来自https://github.com/exaile/exaile/blob/master/xl/common.py#L350
在 py3+ 中
import ctypes
ctypes.windll.ole32.CoInitialize(None)
upath = r"C:\Windows"
pidl = ctypes.windll.shell32.ILCreateFromPathW(upath)
ctypes.windll.shell32.SHOpenFolderAndSelectItems(pidl, 0, None, 0)
ctypes.windll.shell32.ILFree(pidl)
ctypes.windll.ole32.CoUninitialize()
在 py2+
只需提供一个 unicode 路径即可。
注意:ILCreateFromPathW
(Unicode) 和 ILCreateFromPathA
(ANSI)
关于python 打开windows资源管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38835359/