Python中如何实现调用批处理后让Python退出而批处理继续运行?
windows 环境,想让 python 退出之后批处理继续执行,应该怎么操作,跪求指点。
Python中如何实现调用批处理后让Python退出而批处理继续运行?
用 subprocess.Popen 应该可以<br>import subprocess<br>subprocess.Popen(cmd, shell=True)<br>
用 subprocess.Popen 就行,关键是把 creationflags 参数设置好。在Windows上,得用 CREATE_NEW_CONSOLE 这个标志,它能给批处理开个新窗口,这样Python脚本退出了,批处理还能接着跑。
给你个例子,比如要运行 my_script.bat:
import subprocess
import sys
# 批处理文件的路径
bat_file = "my_script.bat"
try:
# 关键在这里:creationflags=subprocess.CREATE_NEW_CONSOLE
process = subprocess.Popen(
[bat_file],
creationflags=subprocess.CREATE_NEW_CONSOLE
)
# 这里不调用 process.wait(),直接让Python退出
print(f"已启动批处理,PID: {process.pid}")
sys.exit(0) # 或者直接让脚本自然结束
except FileNotFoundError:
print(f"错误:找不到文件 '{bat_file}'")
except Exception as e:
print(f"启动批处理时出错: {e}")
原理:CREATE_NEW_CONSOLE 会让系统为批处理单独创建一个控制台窗口。Python进程和这个新控制台进程是分开的,所以Python退出了,新窗口里的批处理照样执行。
注意:这个标志只在Windows好使。如果是Linux/macOS,思路类似,但方法不同,通常用 nohup 或者让进程在后台跑。
一句话建议:用 subprocess.Popen 加 CREATE_NEW_CONSOLE 标志实现分离。
不清楚,我每次运行 ffmpeg 时,python 退出,还在运行
<br>import signal<br><br>signal.signal(signal.SIGINT, handler)<br>
我不知道 Windows 支不支持信号, 那个 handler 是一个函数,函数里面写上 Python 退出之后你想执行的代码.

