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

初始代码

exec_code = "python ./lazy.py"
python_exe = r"C:\Users\Lisys\AppData\Local\Programs\Python\Python37\python.exe"
  • 方法一:os.system

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

os.system(exec_code)
  • 方法二:os.startfile

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

os.startfile("lazy.py")
  • 方法三:os.spawnv

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

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

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

os.spawnv(os.P_WAIT, python_exe, (python_exe, "./lazy.py"))
  • 方法四:os.popen

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

os.popen(exec_code)

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

os.popen(exec_code).read()
  • 方法五:subprocess.Popen

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

stream = io.BytesIO()
stream.close()
p = subprocess.Popen(exec_code, shell=True, stdout=subprocess.PIPE)
p.wait()
p.poll()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容