需求🐱🚀
python使用过程中,有的时候会需要通过代码调用另一个.py程序。
但是我们以及主进程并不知道另一个程序,运行的情况。
能不能通过一些手段,来提示主进程呢
解决办法🎡
subprocess.Popen
允许你启动一个新进程,并可以连接到它的输出/错误管道,从而可以实时地读取print数据。
示例程序
process = subprocess.Popen(
['你的python解释器路径', "你的python程序",
obj(这个改成你要传递的参数)], stdout=subprocess.PIPE,
text=True)
#text=True,让输出的内容是str形式,而不是字节形式
while True:
# 读取一行输出,注意这里是非阻塞的,如果没有输出会立即返回空字符串
line = process.stdout.readline().strip()
if not line and process.poll() is None:
# 如果读取到空字符串且进程已结束,则退出循环
break
if line:
# 如果有输出,则打印它
print(f"[stdout] :{line}")
process.wait()
当设置 stdout=subprocess.PIPE
时, subprocess.Popen()
将子进程的标准输出(stdout)捕获到一个管道(pipe)中,这样你就可以在Python程序中访问这个输出了。