📜  在 python 中捕获 os.system 的输出(1)

📅  最后修改于: 2023-12-03 14:51:06.106000             🧑  作者: Mango

在 Python 中捕获 os.system 的输出是一种常见的需求,因为 os.system 通常用于执行外部命令或程序,并返回执行结果。本文将介绍三种方法来实现在 Python 中捕获 os.system 的输出。

方法一:使用 os.popen

os.popenos.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.Popensubprocess.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 模块更加灵活和安全。