在文件上打开资源管理器

105 投票
11 回答
161529 浏览
提问于 2025-04-11 19:54

在Python中,我该如何直接打开Windows资源管理器中的一个文件呢?我找到了一种方法可以跳转到文件夹:

import subprocess
subprocess.Popen('explorer "C:\path\of\folder"')

但是我还没有找到针对文件的解决办法。

11 个回答

16

因为explorer可以被覆盖,所以直接指向可执行文件会更安全一些。(我刚刚也被人教过这个)

顺便提一下:使用Python 3现在的子进程API:run()

import os
import subprocess
FILEBROWSER_PATH = os.path.join(os.getenv('WINDIR'), 'explorer.exe')

def explore(path):
    # explorer would choke on forward slashes
    path = os.path.normpath(path)

    if os.path.isdir(path):
        subprocess.run([FILEBROWSER_PATH, path])
    elif os.path.isfile(path):
        subprocess.run([FILEBROWSER_PATH, '/select,', path])
39

一个更好更安全的解决方案(可惜只在Windows上有效)是 os.startfile()

当你给它一个文件夹而不是文件时,它会打开资源管理器。

我知道这样并没有完全回答问题,因为它并没有选择文件,但使用 subprocess 通常不是个好主意(出于安全考虑),这个解决方案可能会对其他人有所帮助。

124

来自Geoff Chappell的《Windows资源管理器命令行》

import subprocess
subprocess.Popen(r'explorer /select,"C:\path\of\folder\file"')

撰写回答