📅  最后修改于: 2023-12-03 14:51:06.106000             🧑  作者: Mango
在 Python 中捕获 os.system
的输出是一种常见的需求,因为 os.system
通常用于执行外部命令或程序,并返回执行结果。本文将介绍三种方法来实现在 Python 中捕获 os.system
的输出。
os.popen
os.popen
是 os.system
的替代方法之一。它返回一个可以读取子进程输出的文件对象。可以使用 read()
方法获取完整输出,也可以使用 readline()
方法逐行读取输出。以下是一个示例:
import os
output = os.popen('echo "Hello, world!"').read()
print(output)
输出:
Hello, world!
subprocess.check_output
subprocess.check_output
是 Python 2.7 引入的一个高级模块,它可以创建新进程并捕获其输出。以下是一个示例:
import subprocess
output = subprocess.check_output(['echo', 'Hello, world!'])
print(output.decode())
输出:
Hello, world!
subprocess.Popen
subprocess.Popen
是 subprocess.check_output
的底层实现。它可以实现更复杂的进程控制和输出处理。以下是一个示例:
import subprocess
# 创建进程对象
process = subprocess.Popen(['echo', 'Hello, world!'], stdout=subprocess.PIPE)
# 读取输出
output, error = process.communicate()
print(output.decode())
输出:
Hello, world!
以上是三个常见的捕获 os.system
输出的方法。选择哪种方法取决于具体情况,但通常来说,使用 subprocess
模块比使用 os
模块更加灵活和安全。