如何用Python执行外部程序/文件且保持自身代码持续运行?
Python 并行执行外部程序与调用系统默认关联程序
一、实现主程序与外部程序并行运行(达成指定输出顺序)
直接调用外部Python脚本会阻塞主程序执行,要让main.py和File1.py并行运行,可使用subprocess.Popen启动独立子进程,主程序无需等待其结束即可继续执行。
修改后的main.py代码如下:
from time import sleep import subprocess print("main.py has started") # 启动File1.py,不阻塞主程序 subprocess.Popen(["python", "File1.py"]) sleep(2) print("main.py is still running") sleep(2) print("main.py has ended")
运行后即可得到期望的输出顺序:
>> main.py has started >> File1 has started >> main.py is still running >> File1 has ended >> main.py has ended
说明:subprocess.Popen会启动独立进程运行File1.py,主程序main.py继续向下执行,两者输出会根据各自的sleep时间交错出现,完全匹配预期逻辑。
二、调用系统默认关联程序打开文件
可以通过跨平台方式调用系统默认程序打开对应格式文件,以下是两种实用方案:
方案1:跨平台通用实现
利用各系统自带命令(Windows用start、macOS用open、Linux用xdg-open),通过subprocess.run执行:
import subprocess import os import sys def open_with_default_app(file_path): if os.name == 'nt': # Windows系统 subprocess.run(["start", "", file_path], shell=True) elif os.name == 'posix': # macOS/Linux系统 if sys.platform == 'darwin': # macOS subprocess.run(["open", file_path]) else: # Linux subprocess.run(["xdg-open", file_path]) # 示例:打开txt文件 open_with_default_app("example.txt")
方案2:Windows专属简化实现
Windows系统可直接使用os.startfile快速调用默认程序:
import os os.startfile("example.txt")
该方法会自动调用系统中与.txt格式关联的默认程序(如记事本、Word等)打开目标文件。
内容的提问来源于stack exchange,提问作者Tousend1000
相关产品推荐
相关产品推荐

