Python: открытие папки в Explorer / Nautilus / Mac-thingie - PullRequest
32 голосов
/ 09 июля 2011

Я в Python, и у меня есть путь к определенной папке.Я хочу открыть его с помощью проводника по умолчанию для этой системы.Например, если это компьютер с Windows, я хочу использовать Explorer, если это Linux, я хочу использовать Nautilus или что-то другое по умолчанию, если это Mac, я хочу использовать любой проводник Mac OS, который называется.

Как я могу это сделать?

Ответы [ 5 ]

31 голосов
/ 25 апреля 2013

Я удивлен, что никто не упомянул использование 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])
17 голосов
/ 09 июля 2011

Вы можете использовать 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])
8 голосов
/ 13 сентября 2012

Следующие работы на Macintosh.

import webbrowser
webbrowser.open('file:///Users/test/test_folder')

В GNU / Linux используйте абсолютный путь к папке. (Убедитесь, что папка существует)

import webbrowser
webbrowser.open('/home/test/test_folder')

Как указано в другом ответе, он работает и в Windows.

2 голосов
/ 09 июля 2011

Я думаю, что вам, возможно, придется обнаружить операционную систему, а затем запустить соответствующий файловый менеджер соответственно.

Может пригодиться для Finder в OSX: Python "show in finder"

(к сожалению, ниже работает только для Windows)

import webbrowser as wb
wb.open('C:/path/to/folder')

Это работает в Windows. Я предполагаю, что это будет работать на других платформах. Кто-нибудь может подтвердить? Только подтвержденные окна: (

0 голосов
/ 08 апреля 2019

Один из подходов к чему-то подобному - это, возможно, расставить приоритеты читабельности и подготовить код таким образом, чтобы извлечь абстракции было легко.Вы можете воспользоваться возможностями функций высших порядков Python и пойти по этому пути, создав исключение, если правильное назначение функции не может быть выполнено, если конкретная платформа не поддерживается.

...