在文件上打开资源管理器

Kir*_*tov 62 python windows explorer

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

import subprocess
subprocess.Popen('explorer "C:\path\of\folder"')
Run Code Online (Sandbox Code Playgroud)

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

Bla*_*rad 73

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

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

  • 由于一些奇怪的原因,在我的Windows 10系统上,这只会打开探索者用户库,其焦点是"我的文档". (15认同)
  • 我遇到了与@MisterGeeky 相同的问题,它只是打开“我的文档”。我很确定这与反斜杠有关...... (4认同)
  • 如果您在文件路径中使用正斜杠,则执行 filepath.replace('/', '\\') ,使其类似于 C:\path\of\folder\file (2认同)
  • 看到如果你想组合 f 和 r 字符串来执行此操作,可以执行 `subprocess.Popen(fr'explorer /select,"{my_var}"')` (2认同)

ewe*_*ody 12

由于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])
Run Code Online (Sandbox Code Playgroud)


Gui*_*ton 9

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

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

我知道我没有完全回答问题,因为它没有选择文件,但是使用subprocess始终是个坏主意,此解决方案可能会对其他人有所帮助。

  • 不是很跨操作系统,“startfile”仅存在于 Windows 上(/sf/ask/2087611991/)。 (2认同)
  • 此函数拒绝像“./some/folder”这样的路径。您可以先使用 `os.path.abspath("./some/folder")` 来转换路径。 (2认同)
  • “使用子流程总是一个坏主意”......什么?不,不是。 (2认同)

小智 9

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

import easygui
file = easygui.fileopenbox()
Run Code Online (Sandbox Code Playgroud)


use*_*754 7

出于某种原因,在Windows 7上它总是打开用户路径,对我来说,经过研究:

import subprocess
subprocess.call("explorer C:\\temp\\yourpath", shell=True)
Run Code Online (Sandbox Code Playgroud)


Ste*_*ski 6

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

import subprocess
subprocess.Popen(f'explorer /select,{variableHere}')
Run Code Online (Sandbox Code Playgroud)

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

import subprocess
subprocess.Popen(f'explorer "{variableHere}"')
Run Code Online (Sandbox Code Playgroud)

我只在 windows 上测试过