89

在 Python 中,如何在 Windows 资源管理器中跳转到文件?我找到了跳转到文件夹的解决方案:

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

但我没有文件的解决方案。

4

7 回答 7

104

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

import subprocess
subprocess.Popen(r'explorer /select,"C:\path\of\folder\file"')
于 2008-11-11T19:33:14.737 回答
24

一个更好、更安全的解决方案(不幸的是仅在 Windows 中)是os.startfile()

当它被赋予一个文件夹而不是一个文件时,它将打开资源管理器。

我知道我没有完全回答这个问题,因为它没有选择文件,但是使用subprocess总是一个坏主意(出于安全原因),这个解决方案可能会帮助其他人。

于 2018-03-07T19:40:39.607 回答
14

由于explorer可以被覆盖,直接指向可执行文件会更安全一些。(也必须接受这方面的教育

当您使用它时:使用 Python 3s current subprocess 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])
于 2018-06-21T09:56:13.990 回答
10

出于某种原因,在 Windows 7 上,它总是打开用户路径,对我来说,如下所示:

import subprocess
subprocess.call("explorer C:\\temp\\yourpath", shell=True)
于 2014-12-02T13:51:51.653 回答
10

或者,您可以使用EasyGUI的 fileopenbox 模块打开文件资源管理器供用户单击,然后选择一个文件(返回完整的文件路径)。

import easygui
file = easygui.fileopenbox()
于 2018-10-18T19:48:50.180 回答
7

对于任何想知道如何使用变量代替直接文件路径的人。下面的代码将打开资源管理器并突出显示指定的文件。

import subprocess
subprocess.Popen(f'explorer /select,{variableHere}')

下面的代码只会在资源管理器中打开指定的文件夹,而不突出显示任何特定文件。

import subprocess
subprocess.Popen(f'explorer "{variableHere}"')

我只在windows上测试过

于 2020-12-15T15:57:41.223 回答
-1

在资源管理器中打开文件夹的代码:

import os
import ctypes
SW_SHOWDEFAULT = 10
path_to_open = os.getenv('windir')
ctypes.windll.shell32.ShellExecuteW(0, "open", path_to_open, 0, 0, SW_SHOWDEFAULT)
于 2021-12-06T06:27:43.097 回答