我想知道如何根据文件的扩展名在记事本和图片查看器等程序中打开文件。我在 Windows 上使用 Python 3.3。
我做了一些研究,人们提到了一个名为 Image
的模块,但是当我尝试导入这个模块时,我得到了一个 ImportError。
这是我目前所拥有的:
def openFile():
fileName = listbox_1.get(ACTIVE)
if fileName.endswith(".jpg"):
fileName.open()
我还会有需要在记事本中打开的 HTML 和 JSON 文件。
在 Windows 上你可以使用 os.startfile()
使用默认应用程序打开文件:
import os
os.startfile(filename)
没有 shutil.open()
这样就可以跨平台了。最接近的近似值是 webbrowser.open()
:
import webbrowser
webbrowser.open(filename)
可能会在 OS X 上自动使用 open
命令,在 Windows 上使用 os.startfile()
,在 Linux 上使用 xdg-open
或类似命令。
如果你想运行一个特定的应用程序,那么你可以使用 subprocess
module例如,Popen()
允许在不等待程序完成的情况下启动程序:
import subprocess
p = subprocess.Popen(["notepad.exe", fileName])
# ... do other things while notepad is running
returncode = p.wait() # wait for notepad to exit
有很多方法可以使用subprocess
模块来运行程序,例如subprocess.check_call(command)
。阻塞直到命令完成,如果命令以非零退出代码结束则引发异常。