Python 解析命令的输出
我如何解析“df-h/local/mnt”的输出以获取“Avail”数据,并在其小于150G时退出脚本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
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],这将删除最后一个字符。