我正在运行subprocess
命令:
import subprocess; subprocess.call(['df', '--output=pcent'])
output
s:
Use%
80%
0%
0%
3%
1%
0%
51%
0%
我想抓住第二个%
,旁边有一个数字(在这种情况下为80%
,并对其进行计算)。
我怎样才能轻松做到这一点?
谢谢
答案 0 :(得分:0)
首先subprocess.call
只返回返回码,因此您需要其他subprocess
函数,例如check_output
:
import subprocess
output = subprocess.check_output(['df', '--output=pcent'])
然后,输出以bytes
(python 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())