Python:在Explorer/Nautilus/Mac-thingie中打开一个文件夹

Ram*_*hum 34 python directory cross-platform

我是Python,我有一个特定文件夹的路径.我想使用该系统的默认文件夹资源管理器打开它.例如,如果它是Windows计算机,我想使用资源管理器,如果它是Linux,我想使用Nautilus或其他默认设置,如果它是Mac,我想使用任何Mac OS的浏览器.

我怎样才能做到这一点?

Cas*_*Cas 34

我很惊讶没有人提到使用xdg-open*nix,它将适用于文件和文件夹:

import os
import platform
import subprocess

def open_file(path):
    if platform.system() == "Windows":
        os.startfile(path)
    elif platform.system() == "Darwin":
        subprocess.Popen(["open", path])
    else:
        subprocess.Popen(["xdg-open", path])
Run Code Online (Sandbox Code Playgroud)

  • @Cas:它不起作用.这样做:`subprocess.Popen(["explorer","/ select,",path])` (5认同)
  • @mahemadhi:这应该有效:`subprocess.Popen(["explorer/select,",path])` (2认同)

Die*_*Epp 17

你可以用subprocess.

import subprocess
import sys

if sys.platform == 'darwin':
    def openFolder(path):
        subprocess.check_call(['open', '--', path])
elif sys.platform == 'linux2':
    def openFolder(path):
        subprocess.check_call(['xdg-open', '--', path])
elif sys.platform == 'win32':
    def openFolder(path):
        subprocess.check_call(['explorer', path])
Run Code Online (Sandbox Code Playgroud)

  • 我会使用 `subprocess.Popen()` 而不是 `subprocess.check_call()`,因为我们通常不想等待这些程序完成(并且 Windows 版本实际上会因为非零退出状态而出错) . (2认同)

小智 8

以下适用于Macintosh.

import webbrowser
webbrowser.open('file:///Users/test/test_folder')
Run Code Online (Sandbox Code Playgroud)

在GNU/Linux上,使用文件夹的绝对路径.(确保文件夹存在)

import webbrowser
webbrowser.open('/home/test/test_folder')
Run Code Online (Sandbox Code Playgroud)

正如在另一个答案中指出的那样,它也适用于Windows.

  • 这可以在 ubuntu 上的普通 python shell 中运行,但在另一个应用程序中(比如在 Foundry 的 Nuke 中),它默认为 firefox (2认同)

Aco*_*orn 3

我认为您可能需要检测操作系统,然后相应地启动相关的文件资源管理器。

这对于 OSX 的 Finder 很有用:Python“show in finder”

(不幸的是,下面的内容仅适用于 Windows)

import webbrowser as wb
wb.open('C:/path/to/folder')
Run Code Online (Sandbox Code Playgroud)

这适用于 Windows。我认为它可以跨其他平台工作。有人能证实吗?仅确认窗口:(