2011-07-08 3 views
31

私はPythonで、特定のフォルダのパスを持っています。私はそのシステムのためのデフォルトのフォルダエクスプローラを使用してそれを開きたいです。たとえば、Windowsの場合はエクスプローラを使いたい、Linuxの場合はNautilusを使いたいのですが、Macの場合はMac OSのエクスプローラが呼ばれているものを使いたいと思っています。Python:Explorer/Nautilus/Mac-thingieでフォルダを開く

どうすればいいですか?

+3

+1。 – TorelTwiddler

+0

http://stackoverflow.com/questions/3520493/python-show-in-finder –

答えて

2

オペレーティングシステムを検出し、それに応じて適切なファイルエクスプローラを起動する必要があると思います。

これはOSXのFinderのためにuserfulで来ることができます:Python "show in finder"

(以下だけ残念ながら窓のために働く)

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

これは、Windows上で動作します。 私はそれが他のプラットフォーム間で動作すると仮定します。誰でも確認できますか? 確認Windowsのみ:(

+0

の複製の2/3と思われます。これはMacでは動作しません。 (はい、私はパスを変更しました:P) – LaC

+0

これは、IEがデフォルトブラウザであるかどうかに関係なく、Windows上で動作しますか? –

+0

あなたはOSを検出しなければならないかもしれません:( – Acorn

15

あなたは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

OS X( 'darwin')コードは、OPが望んでいると思われるFinderウィンドウではなく、デフォルトアプリケーションでファイルを開こうとします。別の答えをするには、別の何かをする必要があります; http://stackoverflow.com/questions/3520493/python-show-in-finderを参照してください。 –

+0

@Ned:質問には、「私はacフォルダを削除します。私は、ファイルパスがこの関数に渡されないと仮定しました。同じ制限がLinux/Gnomeコードにも適用されます。このコードはデフォルトアプリケーションのファイルも開きます。 –

+1

私は最後のチェックに 'win32'を追加します – Alex

7

Macintosh上で、次の作品。GNU/Linuxの

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

、フォルダの絶対パスを使用します。(してくださいフォルダが存在することを確認してください)

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

他のswer、Windowsでも動作します。

+0

私はそれがWindows上で動作することを確認しました!シンプルで素敵なソリューション! – otterb

+0

これは容認された解決策であるべきです。この質問とは異なり、 'webbrowser'はあらゆるプラットフォーム上でノーチラス、エクスプローラ、ファインダなどの場所を開きます。 – Nearoo

+0

"file://"をlinuxに追加することもできますが、それでも動作します。絶対パスと3つのスラッシュ( 'file:///home/foo' =' file:/// home/foo')を使用するようにしてください。 – Nearoo

23

私は誰もがファイルとフォルダの両方で動作します* nixのためxdg-openを使用して言及していない驚いています:Macの-thingieため

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

Windowsでフォルダを開くときにファイルを選択(強調表示)する方法は? –

+2

@mahemadhi:これはうまくいくはずです: 'subprocess.Popen([" explorer/select、 "、path])' – Cas

+3

@Cas:動作しません。これは以下のようになります: 'subprocess.Popen([" explorer "、"/select "、path])' –

関連する問題