私はPythonを使用していて、特定のフォルダのパスを持っています。そのシステムのデフォルトのフォルダーエクスプローラーを使用して開きます。たとえば、Windowsコンピューターの場合はエクスプローラーを使用し、Linuxの場合はNautilusなどのデフォルトを使用します。Macの場合は、Mac OSのエクスプローラーと呼ばれるものを使用します。
どうやってやるの?
* nixにxdg-open
を使用することについて誰も言及していないことに驚いています。これはファイルとフォルダの両方で機能します。
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])
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])
以下はMacintoshで動作します。
import webbrowser
webbrowser.open('file:///Users/test/test_folder')
GNU/Linuxでは、フォルダーの絶対パスを使用します。 (フォルダが存在することを確認してください)
import webbrowser
webbrowser.open('/home/test/test_folder')
他の回答で指摘されているように、Windowsでも機能します。
オペレーティングシステムを検出し、それに応じて関連するファイルエクスプローラを起動する必要があると思います。
これは、OSXのFinderに役立つかもしれません: Python "show in Finder"
(以下は残念ながらWindowsでのみ機能します)
import webbrowser as wb
wb.open('C:/path/to/folder')
これはWindowsで動作します。 他のプラットフォームでも機能すると思います。誰か確認できますか? 確認済みのウィンドウのみ:(
このような方法の1つのアプローチは、可読性を優先し、抽象化の抽出が容易になるようにコードを準備することです。 python高次関数機能を利用してこれらの行に沿って進み、特定のプラットフォームがサポートされていないときに適切な関数割り当てを行うことができない場合は例外をスローすることができます。
import subprocess
import sys
class UnsupportedPlatformException(Exception):
pass
def _show_file_darwin():
subprocess.check_call(["open", "--", path])
def _show_file_linux():
subprocess.check_call(["xdg-open", "--", path])
def _show_file_win32():
subprocess.check_call(["Explorer", "/select", path])
_show_file_func = {'darwin': _show_file_darwin,
'linux': _show_file_linux,
'win32': _show_file_win32}
try:
show_file = _show_file_func[sys.platform]
except KeyError:
raise UnsupportedPlatformException
# then call show_file() as usual