python 打开windows资源管理器

标签 python windows explorer

请想象这样的情况:本地文件的图标显示在 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/

相关文章:

python - 如何在Python中通过套接字建立连接?

c++ - 获取windows explorer C++的当前路径

c# - 拖放到桌面/资源管理器

windows - 经典 ASP : C0000005 Error on execution

c - Windows - 如何清理进程异常终止留下的共享内存对象?

c++ - 资源管理器获取图像的缩略图非常快,它是如何工作的?

python、COM 和多线程问题

python - 访问 scipy.sparse 矩阵中行/列中非零值的最有效方法

python - 查找列表中最大数字的函数

java - 如何在 Windows 上反射(reflect)来自 JAR 的类