2011-07-08 7 views
31

Sono in Python e ho il percorso di una determinata cartella. Voglio aprirlo usando la cartella di esplorazione predefinita per quel sistema. Ad esempio, se si tratta di un computer Windows, voglio usare Explorer, se è Linux, voglio usare Nautilus o qualunque sia l'impostazione predefinita lì, se si tratta di Mac, voglio usare qualunque sia l'explorer di Mac OS.Python: apertura di una cartella in Explorer/Nautilus/Mac-thingie

Come posso farlo?

+3

+1 per Mac-thingie. – TorelTwiddler

+0

Sembra essere 2/3 di un duplicato di http://stackoverflow.com/questions/3520493/python-show-infinder –

risposta

2

Penso che potrebbe essere necessario rilevare il sistema operativo e quindi avviare il file explorer pertinente di conseguenza.

Questo potrebbe venire in userful per Finder di OSX: Python "show in finder"

(funziona il seguito solo per Windows, purtroppo)

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

Questo funziona su Windows. Suppongo che funzionerebbe su altre piattaforme. Qualcuno può confermare? finestre confermate solo :(

+0

Questo non funziona su Mac. (sì, ho cambiato il percorso: P) – LaC

+0

Funziona su Windows indipendentemente dal fatto che IE sia il browser predefinito? –

+0

Argh, potresti dover rilevare il sistema operativo :( – Acorn

15

È possibile utilizzare 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

Il codice OS X ('darwin') tenterà di aprire il file nella sua applicazione predefinita, non in una finestra del Finder che sembra essere ciò che l'OP vuole. un'altra risposta, dovresti fare qualcosa di diverso, vedi http://stackoverflow.com/questions/3520493/python-show-infinder. –

+0

@Ned: La domanda afferma: "Ho il percorso di ertain folder ". Supponevo, quindi, che i percorsi dei file non sarebbero passati a questa funzione. La stessa limitazione si applica al codice Linux/Gnome, che aprirà anche i file nelle loro applicazioni predefinite. –

+1

Vorrei aggiungere anche "win32" all'ultimo controllo – Alex

7

le seguenti opere in Macintosh.

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

su GNU/Linux, utilizzare il percorso assoluto della cartella. (Fare esiste la cartella)

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

Come indicato nell'altro un swer, funziona anche su Windows.

+0

Ho confermato che funziona su Windows! Soluzione così semplice e piacevole! – otterb

+0

Questa dovrebbe essere la soluzione accettata. A differenza della domanda suggerire, 'webbrowser' apre la posizione in nautilus, explorer, finder o qualsiasi altra cosa, su qualsiasi piattaforma. – Nearoo

+0

È anche possibile aggiungere "file: //" davanti ad esso su linux e funziona ancora. Assicurati di utilizzare il percorso assoluto e tre barre ('file: ///home/foo' =' file: /// home/foo'). – Nearoo

23

Sono sorpreso nessuno ha menzionato utilizzando xdg-open per * nix che lavorerà sia per i file e le cartelle:

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

Come selezionare (evidenziare) un file mentre si apre la cartella in Windows? –

+2

@mahemadhi: Questo dovrebbe funzionare: 'subprocess.Popen ([" explorer/select, ", path])' – Cas

+3

@Cas: non funziona. Questo fa: 'subprocess.Popen ([" explorer ","/select, ", path])' –