在文件上打开资源管理器

发布于 2024-07-09 05:46:45 字数 171 浏览 17 评论 0原文

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

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

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

In Python, how do I jump to a file in the Windows Explorer? I found a solution for jumping to folders:

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

but I have no solution for files.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(11

演出会有结束 2024-07-16 05:46:45

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

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

From Geoff Chappell's The Windows Explorer Command Line

import subprocess
subprocess.Popen(r'explorer /select,"C:\path\of\folder\file"')
败给现实 2024-07-16 05:46:45

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

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

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

A nicer and safer solution (only in Windows unfortunately) is os.startfile().

When it's given a folder instead of a file, it will open Explorer.

Im aware that i do not completely answer the question since its not selecting a file, but using subprocess is always kind of a bad idea (for security reasons) and this solution may help other people.

浅唱ヾ落雨殇 2024-07-16 05:46:45

由于 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])

As explorer could be overridden it would be a little safer to point to the executable directly. (just had to be schooled on this too)

And while you're at it: use 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])
╰◇生如夏花灿烂 2024-07-16 05:46:45

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

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

For some reason, on windows 7 it always opens the users Path, for me following worked out:

import subprocess
subprocess.call("explorer C:\\temp\\yourpath", shell=True)
独留℉清风醉 2024-07-16 05:46:45

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

import easygui
file = easygui.fileopenbox()

Alternatively, you could use the fileopenbox module of EasyGUI to open the file explorer for the user to click through and then select a file (returning the full filepath).

import easygui
file = easygui.fileopenbox()
一身仙ぐ女味 2024-07-16 05:46:45

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

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

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

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

我只在 Windows 上测试过

For anyone wondering how to use a variable in place of a direct file path. The code below will open explorer and highlight the file specified.

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

The code below will just open the specified folder in explorer without highlighting any specific file.

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

Ive only tested on windows

半步萧音过轻尘 2024-07-16 05:46:45
import os 
path = "C:\path\of\folder"
os.startfile(path)

使用此命令,您可以转到文件资源管理器中的路径

import os 
path = "C:\path\of\folder"
os.startfile(path)

using this cmd you can go to the path in the file explorer

吻泪 2024-07-16 05:46:45

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

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)

Code To Open Folder In Explorer:

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)
输什么也不输骨气 2024-07-16 05:46:45
import subprocess
subprocess.Popen(r'explorer /open,"C:\path\of\folder\file"')

我发现explorer /open命令会列出目录中的文件。
当我使用 /select 命令(如上所示)时,资源管理器打开父目录并突出显示我的目录。

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

I find that the explorer /open command will list the files in the directory.
When I used the /select command (as shown above), explorer opened the parent directory and had my directory highlighted.

帅气尐潴 2024-07-16 05:46:45
import os
os.system('notepad filename')

示例 1. 如果我在同一目录中有一个文件 no.txt

os.system('notepad no.txt')

示例 2. 如果我想打开其他目录中的文件

os.system('notepad "C:\\Users\\DELL\\Downloads\\a.txt"')

注意:我在 Windows 上运行此文件,这就是我使用记事本的原因,您可以根据您的操作系统进行替换。

import os
os.system('notepad filename')

Example 1. If I have a file no.txt in same directory

os.system('notepad no.txt')

Example 2. If I want to open file in some other directory

os.system('notepad "C:\\Users\\DELL\\Downloads\\a.txt"')

Note: I am running this on windows thats why I am using notepad, you can replace according to your os.

知你几分 2024-07-16 05:46:45

这并不完全是问题的答案,但它对我有帮助,所以我认为它也可能对其他人有帮助。

如果您正在使用 wxPython/wxWidgets,您可以尝试 <代码>wx.LaunchDefaultApplication wx.LaunchDefaultBrowser 方法。 我不确定它们在 Windows 上的行为如何,但在我的 Linux 设置上,如果我提供指向 documenturl< 目录的本地路径,它们都会打开我的默认文件管理器/code> 参数,分别。

This is not entirely an answer to the question, but it helped me so I thought it might help others too.

If you use are using wxPython/wxWidgets, you can try the wx.LaunchDefaultApplication and wx.LaunchDefaultBrowser methods. I'm not sure how they behave on Windows, but on my Linux setup they both open my default file manager if I provide a local path that points to a directory as the document or url parameter, respectively.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文