在文件上打开资源管理器


76

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

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

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

Answers:


91

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

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

我知道这是一个过时的文章,但值得一试。我有一个模块,用于将共享点文档库连接到Windows资源管理器窗口,以便本地的过去副本将上载到共享点文档库。有时需要刷新,并且我正在使用硒重新连接,但是现在我打开了Windows资源管理器窗口。我不知道如何关闭该窗口,以便应用程序GUI再次成为最终用户的焦点。知道如何选择该窗口并关闭它吗?
Benjooster 2013年

19
出于某种奇怪的原因,在Windows 10系统上,这只是打开了以“我的文档”为重点的浏览器用户库。
MisterGeeky

1
我遇到的问题与@MisterGeeky相同,它只是打开“我的文档”。我很确定这与反斜杠有关...
birgersp

1
我忘了加上comma (,)之间/selectpathMy Documents打开。即explorer /select,"C:\path\of\folder\file"是正确的不是这个explorer /select "C:\path\of\folder\file"
Phani Rithvij 19/12/25

1
如果您在文件路径中使用正斜杠,请执行filepath.replace('/','\\'),使其类似于C:\ path \ of \ folder \ file
Paul Sumpner

19

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

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

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


是的,可以肯定,我有不安全的想法,但是我非常安全:)虽然如此,但也对我有帮助(多年来,是的)
Kirill Titov

1
不是很跨操作系统,startfile仅存在于Windows(stackoverflow.com/questions/29823028/…)。
cz

另一个令人遗憾的是:os.startfile()不接受参数☹尽管使用Explorer似乎很容易通过subprocess.runPopen
ewerybody

9

由于explorer可以覆盖这将是一个小更安全点直接可执行文件。(也必须对此进行教育

而当您使用它时:使用Python 3s当前的子流程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])

8

出于某种原因,在Windows 7上它总是打开用户路径,对我来说,下面是解决方法:

import subprocess
subprocess.call("explorer C:\\temp\\yourpath", shell=True)

1
subprocess.Popen(r'explorer /select,"C:\path\of\folder\file"')可以,但是如果用户在程序中某处执行了该语句后又转到其他窗口,该如何在其他窗口之上获得该窗口?
南希

这应该会自动弹出在前面
user1767754'1

尽量避免使用shell=Truetho!security.openstack.org/guidelines/…–
ewerybody

只要您知道自己在哪里使用并且它处于封闭环境中,就可以了
user1767754

8

或者,您可以使用EasyGUI的fileopenbox模块打开文件浏览器,以供用户单击并选择一个文件(返回完整的文件路径)。

import easygui
file = easygui.fileopenbox()

2

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

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

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

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

Ive仅在Windows上进行过测试

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.