首页 > 解决方案 > 如何从 os.popen 获取完整的执行信息

问题描述

我正在尝试pip install其他代码需要的一些模块。如果os.system("pip install module_name")返回 1,我想检查失败的原因。

我试图用它os.popen()来获取一些额外的信息,但os.popen("pip install module_name").read()只返回了执行信息的第一行。

有没有人碰巧知道如何获取完整的信息,以便我可以记录并稍后修复它?

标签: python-3.x

解决方案


os.popen不是很强大。使用subprocess.Popencommunicate

import subprocess

p = subprocess.Popen("pip3 install module_name",
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
        shell=True)
stdout, stderr = p.communicate()

print("STATUS:", p.returncode)
print("STDOUT:", stdout)
print("STDERR:", stderr)

推荐阅读