【python 实用性】浅谈subprocess中 Popen() 和 run()方法
warning:
这篇文章距离上次修改已过435天,其中的内容可能已经有所变动。
subprocess模块提供了一种在Python脚本中调用外部程序的方法。Popen是subprocess模块中的一个类,可以用来启动子进程,并与之交互。run是subprocess模块中的一个函数,它封装了Popen,提供了一种简单的方式来运行命令,并等待命令完成后,返回一个包含执行结果的CompletedProcess对象。
解决方案1:使用subprocess.run()
import subprocess
# 使用subprocess.run()来运行命令
completed_process = subprocess.run(['ls', '-l'], capture_output=True, text=True)
# 打印输出结果
print("stdout:", completed_process.stdout)
# 打印错误信息
print("stderr:", completed_process.stderr)解决方案2:使用subprocess.Popen()
import subprocess
# 使用subprocess.Popen()来运行命令
p = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
out, err = p.communicate()
# 打印输出结果
print("stdout:", out)
# 打印错误信息
print("stderr:", err)subprocess.run()相对于Popen的优势在于它是一个更简单的接口,可以更直接地运行命令并获取命令的输出,而无需处理管道和communicate()。不过,如果你需要更复杂的交互,比如要发送信号或者调整子进程的环境,你可能需要使用Popen。
注意:run()函数在Python 3.5中被引入。如果你使用的是更早的Python版本,只能使用Popen。
评论已关闭