【python 实用性】浅谈subprocess中 Popen() 和 run()方法
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
。
评论已关闭