首先subprocess.call
只返回返回码,所以你需要一些其他subprocess
功能,如check_output
:
import subprocess
output = subprocess.check_output(['df', '--output=pcent'])
然后,输出作为bytes
(蟒蛇3)。所以,你必须为ASCII,那么我会使用嵌套列表&发电机内涵,以将其解码:按空格
- 分(换行/空格)
- 处理每个令牌和删除百分号只
- 转换成整数如果令牌是由数字
代码(在命令中的实体模型的输出,以便每个人都可以重现):
output = b"""Use%
80%
0%
0%
3%
1%
0%
51%
0%"""
percents = [int(x) for x in (y.rstrip("%") for y in output.decode("ascii").split()) if x.isdigit()]
print(percents)
这给:
[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())