使用subprocess.Popen
可以执行外部命令,并获取它的输出。当输出较大时,可以使用communicate()
方法来获取输出,并避免出现缓冲区溢出的情况。
以下是一个示例代码:
import subprocess
# 执行外部命令
process = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE)
# 读取输出
output, error = process.communicate()
# 输出结果
print(output.decode('utf-8'))
在以上代码中,通过subprocess.Popen
执行外部命令ls -l
,并将输出存储在output
变量中。最后通过decode('utf-8')
方法将输出转换为字符串并打印出来。
需要注意的是,communicate()
方法会等待命令执行完毕并返回输出结果,因此在输出较大时可能会阻塞程序。如果需要实时获取输出,可以使用stdout.readline()
方法来逐行读取输出。