Python 解析命令的输出

Python 解析命令的输出,python,Python,我如何解析“df-h/local/mnt”的输出以获取“Avail”数据,并在其小于150G时退出脚本 import os from subprocess import Popen, PIPE, STDOUT cmd = ['df', '-h', '/local/mnt'] Pipe = Popen(cmd, stdout=PIPE, stderr=PIPE) (output, error) = Pipe.communicate() print "OUTPUT" print output

我如何解析“df-h/local/mnt”的输出以获取“Avail”数据,并在其小于150G时退出脚本

import os
from subprocess import Popen, PIPE, STDOUT

cmd = ['df', '-h', '/local/mnt']

Pipe = Popen(cmd, stdout=PIPE, stderr=PIPE)
(output, error) = Pipe.communicate()

print "OUTPUT"
print output
df-h/local/mnt的样本输出

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda6       520G  324G  170G  66% /local
试试这个:

import os
output = os.system('df -h /local/mnt')
avail = list(reversed(output.split()))[4]
在这里,我只是简单地列出(reverse())单词数组,因此我需要做的计算空格的工作更少,但实际上并不需要这样做。尝试一下,将[4]的索引改为另一个数字,这里有一种方法:

import subprocess
output = subprocess.check_output("df -h /", shell=True ).split('\n')[1]

data = output.split()[3][:-1]

if int(data) < 150:
    exit()
导入子流程
output=子进程。检查_输出(“df-h/”,shell=True)。拆分('\n')[1]
data=output.split()[3][:-1]
如果int(数据)<150:
退出()

您自己试过什么吗?例如,使用string
.split()
方法?@Evert-是的,我知道如何运行该命令,您是否有任何关于如何解析输出的指针?@sapam-是的,是linuxOk。请确保使用此cmd:“df-Ph”确保您的输出为单行。否则有时会出现两行错误。我得到一个错误
TypeError:“listreverseiterator”对象没有属性“\uuu getitem\uuuu”
对不起,反转的对象不返回列表。您可以只编写output.split()[x]或执行列表(反转(output.split())[4]但您必须计算空格。我相应地修改了答案,试图使用
avail\u space=available\u space.rsplit('G')
只获取整数部分,但是我得到的输出是
['170','']
,如何从
170G`获取
170'…我尝试使用rsplit,但它不起作用,我将avail更改为available\u spaceok,在获得avail\u space之后,然后可以执行以下操作:avail\u number=avail\u space[:-1],这将删除最后一个字符。