人生苦短我用python(04),Python执行shell命令(附例子)
admin
2023-07-20 17:02:55
0

文章内容为原创,欢迎转载请注明出处

作者: EflyPro->晦明禅师

文章来源:公众号“睿江云计算


今天为大家介绍如何使用python的commands模块调用linux shell命令,同时附上一个实际例子给大家参考。


commands库介绍

commands库很简单,只有3个函数,其中一个是不建议使用的,所以今天就跟大家介绍2个函数

commands.getstatusoutput(cmd)
#这个函数执行cmd传递进来的命令,然后返回一个2-tuple (status, output),其中status是执行cmd的返回结果,output是执行cmd的输出内容。

commands.getoutput(cmd)
#这个是上面函数的简化版,只返回执行cmd的输出内容output


实现一个获取本机磁盘分区使用率的脚本

平时我们可以使用 cat /proc/mounts 命令来查看挂载的设备分区列表


人生苦短我用python(04),Python执行shell命令(附例子)


其中我们只统计/dev/开头的分区。至于如何获取分区的磁盘信息,则用os模块的 os.statvfs 函数,具体函数用法请看代码注释。

#!/usr/bin/env python
import commands
import os

def get_disk_uper(path):
    #计算磁盘分区使用率,
    #其中f_blocks是分区的总块数,换算成G
    #f_bavail是分区的可用块数,换算成G
    info = os.statvfs(path)
    total = round(float(info.f_bsize * info.f_blocks)/1024/1024/1024, 2)
    free = round(float(info.f_bsize * info.f_bavail)/1024/1024/1024, 2)
    return 100 - int(float(free) / float(total) * 100)

def get_disk_info():    
    disk_info = {}
    (status, output) = commands.getstatusoutput('cat /proc/mounts')
    #status是执行命令的返回值,默认情况下0是成功,非0是失败
    if status != 0:
        print ststus, output
        return
    #分析返回内容,对返回内容以换行符作为分割
    for line in output.split("\n"):
        #只对/dev/ 分区设备获取使用率
        if not line.startswith('/dev/'):
            continue
        #对一行内容按照空格或者tab进行分割,以提取分区字段名称
        temp = line.split()
        if len(temp) < 2:
            continue
        #获取分区名
        dev_name = temp[1]
        dev_used = get_disk_uper(dev_name)
        print "[%s] = %d%%"%(dev_name, dev_used)

if __name__ == "__main__":
    get_disk_info()

执行返回内容如下

[/] = 10%
[/boot] = 21%



下期预告 

人生苦短我用python【0x02】yield浅析


相关内容

热门资讯

英国贝德福德地区发生火车相撞事... 据英国铁路警察局在社交媒体上发布的信息,距离伦敦约97公里的贝德福德地区发生两辆火车相撞事故。
郑州一汽车用品商城起火,当地发... 2026年6月19日21时左右,宏明路柳林路东南角发生火情。消防部门正在全力开展扑救工作,并同步调查...
英特尔挖来前SK海力士CEO,... 当地时间2026年6月18日,英特尔公司宣布任命李锡熙(Seok-Hee Lee)为其Intel F...
美食直达登机口|青岛机场联合美... 齐鲁晚报·齐鲁壹点记者 赵波 通讯员 张瀚 6月18日,为升级旅客出行服务体验、优化旅客候机用餐模式...
深圳打造生物医药特殊物品通关A... 人民财讯6月19日电,据深圳发布,6月18日,深圳生物医药特殊物品监管改革再升级,全流程一体化信息系...
防爆冰柜厂家梳理 化工/科研/... 导语:在化工、医药、科研等对安全存储要求严苛的领域,防爆冰柜作为关键设备,其性能稳定性、防爆等级适配...
人形机器人成功攀登6200米火... IT之家 6 月 19 日消息,据外媒 Futurism 当地时间 14 日报道,一台由宇树 G1 ...
原创 中... 尹希这个名字,或许并不是每个人都熟悉,但在科学圈内,他曾经是被反复提起的“少年天才”的典型代表。早在...
伊美谈判相关斡旋方21日在埃及... 新华社德黑兰6月19日电(记者陈霄 沙达提)据伊朗伊斯兰共和国广播电视台19日报道,埃及和巴基斯坦当...
减少国家干预,古巴通过170余... 据凤凰卫视报道,古巴总理马雷罗6月18日在会上公布了170多项举措,并获得一致通过。这些举措旨在减少...