如何在Windows系统通过Python调用原生应用打开文件(非open()方法)
在Windows上通过Python调用原生应用打开文件(使用subprocess.run)
完全可以实现,Windows系统里可以借助内置的start命令,结合subprocess.run来调用默认关联的原生应用打开文件,直接查看内容。
基础实现代码
import subprocess def open_file_with_default_app(file_path): # 调用start命令打开文件,空字符串是为了避免start将文件名当作窗口标题 subprocess.run(['start', '', file_path], shell=True, check=True) # 示例调用 open_file_with_default_app("report.pdf") open_file_with_default_app("screenshot.png")
关键细节说明
start是Windows CMD的内置命令,会自动匹配系统中对应文件类型的默认应用,比如用Edge打开PDF、用照片查看器打开图片- 第二个参数传空字符串是必要的:如果
start的第一个参数带引号,会被当作新窗口的标题,留空才能让它正确识别后面的文件路径 shell=True必须加上,因为start是CMD内置命令,需要通过shell环境执行check=True会在命令执行失败时(比如文件不存在)抛出CalledProcessError,方便排查问题
进阶用法
- 等待应用关闭再继续脚本:如果需要等用户看完文件、关闭应用后再执行后续代码,加上
/wait参数subprocess.run(['start', '/wait', '', file_path], shell=True, check=True) - 指定特定应用打开:如果不想用默认应用,直接调用目标程序路径即可,这种情况不需要
shell=True# 用记事本打开文本文件 subprocess.run(['notepad.exe', "notes.txt"], check=True) # 用画图打开图片 subprocess.run(['mspaint.exe', "sketch.bmp"], check=True)
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

