本文跟着上一篇文章继续写,上一篇文章的链接
运用Python语言编写获取Linux基本系统信息(一):获得Linux版本、内核、当前时间
一、随便说说
获取文件系统使用情况的思路和上一篇获取主要系统是一样的,都是通过执行命令获取linux执行命令后的打印,然后对打印出的结果进行处理。
本文在CentOS中获取文件系统的命令是df -h(用量以G/M单位进行显示)
在命令行中打印出来的结果是:
二、想法实现
本篇文章中用到了上一遍文章(链接见顶部)的commands模块在这里就不粘贴代码占篇幅了。。。
fdisk_data.py:
#coding=utf-8
#!/usr/bin/env python
class fdisk_data:
# def __init__(self,filesystem,rom,used,no_used,used_per,mount):
# self.filesystem='' #文件系统
# self.rom='' #容量
# self.used='' #已用
# self.no_used='' #可用
# self.used_per='' #已用百分比
# self.mount='' #挂载点
pass
类fdisk_data.py用来储存文件系统的信息
linux_fdisk.py:
#coding=utf-8
import commands
import re
from fdisk_data import fdisk_data
class linux_fdisk_in:
def __init__(self):
pass
def fdisk(self):
disk_info=[]
f_command = commands.commands('df -h')
comm=f_command.excute_command()
allLine = []
for eachLine in comm:
for eachList in eachLine.strip().split():
disk_info.append(eachList)
return disk_info
class linux_fdisk:
def __init__(self):
self.fdisk = linux_fdisk_in()
def get_fisk(self):
# fdiskdata=fdisk_data()
disk_info=self.fdisk.fdisk()
fdisks=[]
# print disk_info
#按每一条输出
# for i in range(6):
# j=i
# try:
# while disk_info[j] and not j==1000:
# print disk_info[j]
# j=j+6
# except Exception:
# j=1000
#以类的方式实现
# i=6
# j=1
# while j==1:
# try:
# fdiskdata.filesystem=disk_info[i]
# fdiskdata.rom=disk_info[i+1]
# fdiskdata.used=disk_info[i+2]
# fdiskdata.no_used=disk_info[i+3]
# fdiskdata.used_per=disk_info[i+4]
# fdiskdata.mount=disk_info[i+5]
# fdisks.append(fdiskdata)
# i=i+6
# j=0
# except Exception:
# j=0
# return fdisks
#以字典的方式实现
fdiskdate={'filesystem':'','rom':'','used':'','no_used':'','used_per':'','mount':''}
fdiskdates=[]
i=6
j=1
while j==1:
try:
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]}
fdiskdates.append(fdiskdate)
i=i+6
except Exception:
j=0
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'),'\t',fdisks[i]['rom'],'\t',fdisks[i]['used'],'\t'\
,fdisks[i]['no_used'],'\t',fdisks[i]['used_per'],'\t',fdisks[i]['mount']
except Exception:
break
大概就是这样了。。。。
三、结果展示
到了最后的结果演示了:
输出的没有标明每一列代表什么,我不知道怎么才能把文件系统做的很规整,图中第二行就乱了。。。
刚刚开始学python,写的东西都比较简单,错误比较多,欢迎大家指正批评,共同进步~~!!!!
PS:写完第一篇以后成就感大大的~