python3执行外部程序,多种方法

2021-03-13  本文已影响0人  SystemLight

初始代码

exec_code = "python ./lazy.py"
python_exe = r"C:\Users\Lisys\AppData\Local\Programs\Python\Python37\python.exe"

执行shell命令,阻塞父进程,无法和子进程交互

os.system(exec_code)

执行文件脚本,不阻塞父进程,无法和子进程交互

os.startfile("lazy.py")

执行文件脚本,可设置不阻塞父进程,无法和子进程交互

os.spawnv(os.P_NOWAIT, python_exe, (python_exe, "./lazy.py"))

执行文件脚本,可设置阻塞父进程,无法和子进程交互

os.spawnv(os.P_WAIT, python_exe, (python_exe, "./lazy.py"))

封装subprocess.Popen,不操作返回对象不会阻塞父进程会正确执行程序

os.popen(exec_code)

封装subprocess.Popen,调用返回对象的方法会阻塞父进程,可以与子进程交互

os.popen(exec_code).read()

创建管道,读取阻塞父进程,可交互,可通过asyncio封装为异步函数

stream = io.BytesIO()
stream.close()
p = subprocess.Popen(exec_code, shell=True, stdout=subprocess.PIPE)
p.wait()
p.poll()
上一篇 下一篇

猜你喜欢

热点阅读