从终端命令读取结果而不首先保存到python

时间:2016-04-05 20:15:18

标签: python terminal operating-system system

晚上好/早上好,

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

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

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

有没有办法将lspci -tv的结果存储到我程序中的变量中,这样我的程序就不依赖于另一个文件了,每次我需要使用这个方法时,我的计算机都会乱用文件?

提前致谢。

1 个答案:

答案 0 :(得分:0)

是的,你可以根据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