Python 3如何打开运行可执行文件而非仅读取文本文件内容?
Python3调用外部程序打开/运行文件的实现方案
你之前查到的open()是Python内置的文件读写接口,仅用于操作文件的内容,和系统层面的「打开运行文件」是完全不同的功能,要实现你的需求可以用Python标准库的subprocess模块,适配绝大多数场景。
场景1:用系统默认关联程序打开非可执行文件
如果要打开txt、图片、文档等格式的文件,让系统自动调用对应的默认程序打开,可以参考以下跨平台适配代码:
import subprocess import sys # 替换为你要打开的实际文件路径 file_path = "something.txt" if sys.platform == "win32": # Windows系统适配 subprocess.run(["explorer", file_path], shell=True) elif sys.platform == "darwin": # macOS系统适配 subprocess.run(["open", file_path]) else: # Linux系统适配 subprocess.run(["xdg-open", file_path])
如果仅在Windows环境下使用,也可以用更简单的系统专属接口:
import os os.startfile("something.txt")
场景2:直接运行可执行文件(.exe格式)
如果需要运行exe程序,还支持传递运行参数、捕获程序输出等操作。
基础运行示例
import subprocess # 直接运行指定exe,路径替换为你的实际路径 subprocess.run("C:/path/to/your/program.exe") # 需要给exe传参数的话,用列表格式传参更安全,避免路径空格或注入问题 subprocess.run(["C:/path/with space/program.exe", "参数1", "参数2"])
进阶:捕获exe的输出内容
如果需要获取运行exe后返回的控制台输出,可以加参数配置:
import subprocess result = subprocess.run( ["ipconfig"], capture_output=True, text=True, encoding="gbk" # Windows控制台默认编码是gbk,避免中文乱码 ) # 打印exe的标准输出内容 print(result.stdout) # 打印exe的错误输出内容 print(result.stderr)
注意事项
- 传入的文件/路径如果包含空格、中文,优先用列表格式传递参数,不要直接拼接字符串,避免路径识别错误
- 如果需要等待exe运行结束再执行后续代码,直接用
subprocess.run即可;如果需要让exe后台运行不阻塞Python主程序,可以加参数creationflags=subprocess.CREATE_NEW_CONSOLE(Windows专属) - 尽量不要用老旧的
os.system()接口,subprocess的可控性和安全性都更高
内容的提问来源于stack exchange,提问作者ZweiLinkeSchuhe
相关产品推荐
相关产品推荐

