You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 05:15:01