如何从子进程中获取一行.用python调用



我试图从子进程中拉出一行。但到目前为止我还没找到。我想用一些不同的子进程来做这个。调用,这里有一个例子:

output = subprocess.call('vmstat -s, shell=True)

vmstat -s返回当前内存状态的列表。我可以读第2行(使用的内存),并将其存储在一个变量中供以后使用。

在python中做这个最好的方法是什么?

谢谢

check_output代替call:

>>> subprocess.check_output('vmstat -s', shell=True).splitlines()

或者您可以管道stdout:

>>> from subprocess import Popen, PIPE
>>> for line in Popen('vmstat -s', shell=True, stdout=PIPE).stdout:
...     print(line)
... 
b'      3717436 K total memoryn'
b'      2151640 K used memoryn'
b'      1450432 K active memoryn'
...

从子进程标准输出中读取数据的常用方法是使用communication方法。

>>> from subprocess import Popen, PIPE
>>> proc = Popen(['vmstat', '-s'], stdout=PIPE, stderr=PIPE)
>>> stdout, _stderr = proc.communicate()
>>> stdout.splitlines()[1]
'     13278652 K used memory'

请注意,这里不需要使用shell=True,并且在不需要时通常不鼓励使用它(有不必要的开销,并且在某些情况下它可能会创建shell注入安全漏洞)。

最新更新