在 python 中从终端命令读取结果而不先保存到文件

Read results from terminal command without saving to a file first in python

好evening/morning,

我一直在 python 程序中向终端传递很多命令,想知道是否有一种方法可以传递命令并立即保存打印的信息,而不必先将其保存到文件,然后读入该文件?

例如,这是我一直在做的:

os.system("lspci -tv > results")
if Addresses[i-1] in open('results').read():

有没有一种方法可以将 lspci -tv 的结果存储到我的程序中的一个变量中,这样我的程序就不会依赖于另一个文件,并且每次我需要使用这种方法时,我的计算机都会被文件弄得乱七八糟?

提前致谢。

可以,根据 this question:

import subprocess

proc = subprocess.Popen('ls', shell=True, stdout=subprocess.PIPE)
output = proc.stdout.read()

print output

或者,如果您想要一个包含结果的数组:

import subprocess

proc = subprocess.Popen('ls', shell=True, stdout=subprocess.PIPE)
output = proc.stdout.read()
array = output.split("\n")[:-1]

for i in range(len(array)):
    print str(i) + " : " + array[i]

文档here.