在 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.
好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.