我使用Python,有一个特定文件夹的路径,想要通过系统默认的文件夹浏览器打开它。例如,在Windows电脑上,我希望使用Explorer,在Linux上,我希望使用Nautilus或者默认的浏览器,在Mac上,我希望使用Finder。
我应该怎么做呢?
我使用Python,有一个特定文件夹的路径,想要通过系统默认的文件夹浏览器打开它。例如,在Windows电脑上,我希望使用Explorer,在Linux上,我希望使用Nautilus或者默认的浏览器,在Mac上,我希望使用Finder。
我应该怎么做呢?
我很惊讶没有人提到在*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.Popen(["explorer /select,", path])
- Cassubprocess.Popen(["explorer", "/select,", path])
。 - Ronan Paixãoos.startfile(path)
)。 - Ronan Paixão你可以使用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])
darwin
)代码将尝试在其默认应用程序中打开文件,而不是在Finder窗口中打开,这似乎是OP想要的。正如另一个答案中所指出的那样,您需要做一些不同的事情;请参见https://dev59.com/knA75IYBdhLWcg3wAUF9。 - Ned Deilysubprocess.Popen()
而不是subprocess.check_call()
,因为我们通常不想等待这些程序完成(而且Windows版本实际上会因为非零退出状态而出错)。 - Ronan Paixãoimport webbrowser
webbrowser.open('file:///Users/test/test_folder')
在GNU / Linux上,请使用文件夹的绝对路径。(确保该文件夹存在)
import webbrowser
webbrowser.open('/home/test/test_folder')
正如其他答案所指出的,它在 Windows 上也可以工作。
webbrowser
在任何平台上都可以在 Nautilus、Explorer、Finder 或其他地方打开位置。 - Nearoofile:///home/foo
= file:///home/foo
)。 - Nearooimport webbrowser as wb
wb.open('C:/path/to/folder')
这适用于Windows系统。我认为它可以在其他平台上运行。有人可以确认一下吗?只适用于Windows系统 :(
file://C:/lol
(使用正斜杠)。 在Linux中同样适用:file:///home/foo/bar
。 - Nearoo对于Mac OS,您可以使用
import subprocess
subprocess.run["open", "your/path"])
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