我需要能够在Windows和Mac OS中使用默认应用程序打开文档。基本上,我想做的事情与在资源管理器或Finder中双击文档图标时发生的事情相同。在Python中做这件事的最好方法是什么?
发布于 2009-01-12 15:00:22
使用Python 2.4+上提供的subprocess
模块,而不是os.system()
,这样就不必处理外壳转义。
import subprocess, os, platform
if platform.system() == 'Darwin': # macOS
subprocess.call(('open', filepath))
elif platform.system() == 'Windows': # Windows
os.startfile(filepath)
else: # linux variants
subprocess.call(('xdg-open', filepath))
双括号是因为subprocess.call()
想要一个序列作为它的第一个参数,所以我们在这里使用了一个元组。在带有Gnome的Linux系统上,也有一个gnome-open
命令可以做同样的事情,但是xdg-open
是自由桌面基础标准,可以在Linux桌面环境中工作。
发布于 2009-01-12 12:33:39
我更喜欢:
os.startfile(path, 'open')
请注意,此模块支持文件夹和文件中包含空格的文件名,例如
A:\abc\folder with spaces\file with-spaces.txt
(python docs)不必添加'open‘(这是默认设置)。文档特别提到,这就像在Windows资源管理器中双击文件的图标一样。
此解决方案仅适用于windows。
发布于 2009-01-12 14:47:10
只是为了完整性(这不在问题中),xdg-open将在Linux上做同样的事情。
https://stackoverflow.com/questions/434597
复制相似问题