Python 2.7 解析df的输出--选择第一个%符号的输出

Python 2.7 解析df的输出--选择第一个%符号的输出,python-2.7,parsing,subprocess,Python 2.7,Parsing,Subprocess,我有一个子进程命令正在运行: 导入子流程;子进程调用(['df','--output=pcent']) 哪个输出s: Use% 80% 0% 0% 3% 1% 0% 51% 0% 我想抓取第二个%,旁边有一个数字(80%,在这种情况下,对其进行计算) 我怎样才能轻松地做到这一点 谢谢首先子流程。call只返回返回代码,因此您需要一些其他子流程函数,如检查输出: import subprocess output = subprocess.check_output([

我有一个
子进程
命令正在运行:
导入子流程;子进程调用(['df','--output=pcent'])

哪个
输出
s:

Use%
 80%
  0%
  0%
  3%
  1%
  0%
 51%
  0%
我想抓取第二个
%
,旁边有一个数字(
80%
,在这种情况下,对其进行计算)

我怎样才能轻松地做到这一点


谢谢

首先
子流程。call
只返回返回代码,因此您需要一些其他
子流程
函数,如
检查输出

import subprocess

output = subprocess.check_output(['df', '--output=pcent'])
然后,输出以
字节的形式提供(python 3)。因此,您必须将其解码为ASCII,然后我将使用嵌套列表和生成器理解:

  • 根据空格(换行符/空格)拆分
  • 处理每个令牌并删除百分号
  • 仅当令牌由数字组成时才转换为整数
代码(使用命令的模拟输出,以便每个人都可以复制):

其中:

[80, 0, 0, 3, 1, 0, 51, 0]
当然,这比你要求的要多。要获取第一项,只需获取此列表中的第一项,或获取带有生成器和
next
的第一个令牌:

first_percent = next(int(x) for x in (y.rstrip("%") for y in output.decode("ascii").split()) if x.isdigit())

第一个
子流程。call
只返回返回代码,因此您需要一些其他
子流程
函数,如
检查输出

import subprocess

output = subprocess.check_output(['df', '--output=pcent'])
然后,输出以
字节的形式提供(python 3)。因此,您必须将其解码为ASCII,然后我将使用嵌套列表和生成器理解:

  • 根据空格(换行符/空格)拆分
  • 处理每个令牌并删除百分号
  • 仅当令牌由数字组成时才转换为整数
代码(使用命令的模拟输出,以便每个人都可以复制):

其中:

[80, 0, 0, 3, 1, 0, 51, 0]
当然,这比你要求的要多。要获取第一项,只需获取此列表中的第一项,或获取带有生成器和
next
的第一个令牌:

first_percent = next(int(x) for x in (y.rstrip("%") for y in output.decode("ascii").split()) if x.isdigit())