2011-07-08 18 views
31

Estoy en Python, y tengo la ruta de una determinada carpeta. Quiero abrirlo usando el explorador de carpetas predeterminado para ese sistema. Por ejemplo, si se trata de una computadora con Windows, quiero usar Explorer, si es Linux, quiero usar Nautilus o lo que sea el predeterminado, si es Mac, quiero usar lo que se llame al explorador de Mac OS.Python: abrir una carpeta en Explorer/Nautilus/Mac-thingie

¿Cómo puedo hacer eso?

+3

+1 para Mac-thingie. – TorelTwiddler

+0

Parece ser 2/3 de un duplicado de http://stackoverflow.com/questions/3520493/python-show-in-finder –

Respuesta

2

Creo que es posible que tengas que detectar el sistema operativo y luego iniciar el explorador de archivos correspondiente.

Esto podría ser Userful para el Finder de OS X: Python "show in finder"

(La continuación sólo funciona para Windows desafortunadamente)

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

Esto funciona en Windows. Supongo que funcionaría en otras plataformas. ¿Alguien puede confirmar? ventanas confirmada sólo :(

+0

Esto no funciona en Mac. (Sí, cambié la ruta: P) – LaC

+0

¿Funciona esto en Windows independientemente de si IE es el navegador predeterminado? –

+0

Argh, puede que tenga que detectar el sistema operativo entonces :( – Acorn

15

Puede utilizar 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]) 
+0

El código OS X ('darwin') intentará abrir el archivo en su aplicación predeterminada, no en una ventana del Buscador que parece ser lo que el OP quiere. Como se indica en otra respuesta, necesitarías hacer algo diferente; ver http://stackoverflow.com/questions/3520493/python-show-in-finder. –

+0

@Ned: la pregunta dice: "Tengo el camino de ac cualquier carpeta ". Supuse, entonces, que las rutas de archivo no se pasarían a esta función. La misma limitación se aplica al código de Linux/Gnome, que también abrirá archivos en sus aplicaciones predeterminadas. –

+1

También agregaría 'win32' a la última verificación – Alex

7

Los siguientes trabajos sobre Macintosh.

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

en GNU/Linux, utilice la ruta absoluta de la carpeta. (Hacer Asegúrese de que la carpeta exista)

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

Como se indicó en la otra swer, también funciona en Windows.

+0

¡Confirmé que funciona en Windows! ¡Una solución tan simple y agradable! – otterb

+0

Esta debería ser la solución aceptada. A diferencia de lo que sugeriría la pregunta, 'webbrowser' abre la ubicación en nautilus, explorer, finder o lo que sea, en cualquier plataforma. – Nearoo

+0

También puede agregar "file: //" delante de él en Linux y todavía funciona. Solo asegúrate de usar la ruta absoluta y tres barras diagonales ('file: ///home/foo' =' file: /// home/foo'). – Nearoo

23

me sorprende que nadie ha mencionado el uso de xdg-open * nix que funcionará tanto para archivos y carpetas:

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]) 
+0

¿Cómo seleccionar (resaltar) un archivo al abrir la carpeta en Windows? –

+2

@mahemadhi: Esto debería funcionar: 'subprocess.Popen ([" explorer/select, ", path])' – Cas

+3

@Cas: no funciona. Esto hace: 'subprocess.Popen ([" explorer ","/select, ", path])' –

Cuestiones relacionadas