zoukankan      html  css  js  c++  java
  • 运用Python语言编写获取Linux基本系统信息(二):文件系统使用情况获取

    本文跟着上一篇文章继续写,上一篇文章的链接

    运用Python语言编写获取Linux基本系统信息(一):获得Linux版本、内核、当前时间

    一、随便说说

    获取文件系统使用情况的思路和上一篇获取主要系统是一样的,都是通过执行命令获取linux执行命令后的打印,然后对打印出的结果进行处理。

    本文在CentOS中获取文件系统的命令是df -h(用量以G/M单位进行显示)

    在命令行中打印出来的结果是:

    二、想法实现

    本篇文章中用到了上一遍文章(链接见顶部)的commands模块在这里就不粘贴代码占篇幅了。。。

    fdisk_data.py:

     1 #coding=utf-8
     2 #!/usr/bin/env python
     3 class fdisk_data:
     4     # def __init__(self,filesystem,rom,used,no_used,used_per,mount):
     5     #     self.filesystem=''    #文件系统
     6     #     self.rom=''   #容量
     7     #     self.used=''  #已用
     8     #     self.no_used=''   #可用
     9     #     self.used_per=''  #已用百分比
    10     #     self.mount='' #挂载点
    11     pass

    类fdisk_data.py用来储存文件系统的信息

    linux_fdisk.py:

     1 #coding=utf-8
     2 import commands
     3 import re
     4 from fdisk_data import fdisk_data
     5 class linux_fdisk_in:
     6     def __init__(self):
     7         pass
     8     def fdisk(self):
     9         disk_info=[]
    10         f_command = commands.commands('df -h')
    11         comm=f_command.excute_command()
    12         allLine = []
    13         for eachLine in comm:
    14             for eachList in eachLine.strip().split():
    15                 disk_info.append(eachList)
    16         return disk_info
    17 class  linux_fdisk:
    18     def __init__(self):
    19         self.fdisk = linux_fdisk_in()
    20     def get_fisk(self):
    21         # fdiskdata=fdisk_data()
    22         disk_info=self.fdisk.fdisk()
    23         fdisks=[]
    24         # print disk_info
    25         #按每一条输出
    26         # for i in range(6):
    27         #     j=i
    28         #     try:
    29         #         while disk_info[j] and not j==1000:
    30         #             print disk_info[j]
    31         #             j=j+6
    32         #     except Exception:
    33         #         j=1000
    34         #以类的方式实现
    35         # i=6
    36         # j=1
    37         # while j==1:
    38         #     try:
    39         #         fdiskdata.filesystem=disk_info[i]
    40         #         fdiskdata.rom=disk_info[i+1]
    41         #         fdiskdata.used=disk_info[i+2]
    42         #         fdiskdata.no_used=disk_info[i+3]
    43         #         fdiskdata.used_per=disk_info[i+4]
    44         #         fdiskdata.mount=disk_info[i+5]
    45         #         fdisks.append(fdiskdata)
    46         #         i=i+6
    47         #         j=0
    48         #     except Exception:
    49         #         j=0
    50         # return fdisks
    51         #以字典的方式实现
    52         fdiskdate={'filesystem':'','rom':'','used':'','no_used':'','used_per':'','mount':''}
    53         fdiskdates=[]
    54         i=6
    55         j=1
    56         while j==1:
    57             try:
    58                 fdiskdate={'filesystem':disk_info[i],'rom':disk_info[i+1],'used':disk_info[i+2],'no_used':disk_info[i+3],'used_per':disk_info[i+4],'mount':disk_info[i+5]}
    59                 fdiskdates.append(fdiskdate)
    60                 i=i+6
    61             except Exception:
    62                 j=0
    63         return fdiskdates

    linux_fdisk.py包含两个类:

    类linux_fdisk_in:实现在linux中执行命令,并返回result

    类linux_fdisk:输出获取的结果, 在get_fdisk()方法中我分别以三种方式进行实现,把df -h命令中每一行的每一个词当做一个数据进行一条数据进行存储之后在重组进行比较好看的输出,第一种方式我是直接在函数内print,当时测试用的。。。。第二种我是以类的方式进行存储。第三种则是以字典所组成的列表的方式进行存储。

    上面的linux_data.py最后是没有用到的。实现的方式感觉都比较简单~~~

    最后主函数沿用上次的linux_status_main.py并添加文件系统的输出

    linux_status_main.py:

    #!/usr/bin/env python
    # coding=UTF-8
    import linux_status
    import os_info
    from linux_fdisk import *
    #linux版本,内核,时间
    linux=linux_status.linux_status()
    os= os_info.os_info()
    linux=os.os_info()
    print '系统:',linux.os_version
    print '内核:',linux.os_kernal
    print '时间:',linux.os_date
    #linux文件系统
    fdisk = linux_fdisk()
    fdisks = fdisk.get_fisk()
    print '文件系统'
    for i in range(100):
        try:
            print fdisks[i].get('filesystem'),'	',fdisks[i]['rom'],'	',fdisks[i]['used'],'	'
                ,fdisks[i]['no_used'],'	',fdisks[i]['used_per'],'	',fdisks[i]['mount']
        except Exception:
            break

    大概就是这样了。。。。

    三、结果展示

    到了最后的结果演示了:

    输出的没有标明每一列代表什么,我不知道怎么才能把文件系统做的很规整,图中第二行就乱了。。。

    刚刚开始学python,写的东西都比较简单,错误比较多,欢迎大家指正批评,共同进步~~!!!!

    PS:写完第一篇以后成就感大大的~

  • 相关阅读:
    .ini文件的介绍及对其进行操作
    一些.net 控件使用的小细节
    三、类型设计规范
    [转]TimerCallback 委托
    [转]简单XML文件C#操作方法
    [转]用托盘控制windows服务的c#实现
    [转]DateTime相关
    [转]创建Windows服务 C#
    一、框架设计的基础
    [转]得到当前执行的函数名、码行、源代码文件名
  • 原文地址:https://www.cnblogs.com/soysaucejyz/p/5070468.html
Copyright © 2011-2022 走看看