申请博客有一段时间了,然而到现在还一篇没有写过。。。。。

主要因为没有想到需要写些什么,最近在学习Python语言,照着书上看了看最基础的东西,发现根本看不进去,而且光看的话今天看了觉得都理解懂了,过两天自己回顾这部分内容的时候发现就又忘了,于是自己就想到自己边学边写一些小程序,以便能更好的让自己记住语法。

一、开发环境以及测试环境

Python2.7.10、pycharm、VM虚拟机、CentOS6.3

二、代码实现

代码结构:

commands.py —> os_info_in.py —> os_info.py  |

                linux_status.py  |-->linux_status_main.py

实现:

commands.py:

实现在Python代码中运行Linux的命令,得到打印的结果集,并返回结果results

 # coding=UTF-8
import os
class commands:
def __init__(self,comm):
self.commend=comm
def excute_command(self):
result = os.popen(self.commend)
results = result.readlines()
return results

os_info_in.py:

通过导入刚刚编写的commands.py模块来获取Linux的OS版本号,内核版本号,以及当前的时间。

记录:

eachLine.strip()去掉eachLine前后的空格
findall('Description:\t#(.*)',afind)搜寻与正则表达式相匹配的内容
 #!/usr/bin/env python
# coding=UTF-8
import commands
import re
class os_info_in:
def os_version(self):#获取linux的OS版本号
L_command = commands.commands('lsb_release -a')
comm=L_command.excute_command()
allLine = []
os_ver=''
for eachLine in comm:
allLine.append(eachLine.strip())
for afind in allLine:
if re.findall('Description:\t#(.*)',afind):
os_ver = re.findall('Description:\t#(.*)',afind)
return os_ver[0]
def os_kernel(self):#获取linux的内核版本
L_command = commands.commands('uname -r')
comm=L_command.excute_command()
allLine = []
for eachLine in comm:
allLine.append(eachLine.strip())
return allLine[0]
def os_date(self):#获取系统时间
L_command = commands.commands('date')
comm=L_command.excute_command()
allLine = []
for eachLine in comm:
allLine.append(eachLine.strip())
return allLine[0]

linux_status.py:

保存获取到的linux状态信息

1 #!/usr/bin/env python
# coding=UTF-8
#保存linux状态信息
#os版本号:os_version
#内核版本号:os_kernal
#系统当前时间:os_date
class linux_status:
pass

os_info.py:

通过os_info_in.py获取到的linux状态信息保存到专门储存状态信息的类linux_status中并返回

 # coding=UTF-8
import linux_status
import os_info_in
class os_info:
def __init__(self):
self.linux_stat=linux_status.linux_status()
self.os_infos_in= os_info_in.os_info_in()
def os_info(self):
self.linux_stat.os_version = self.os_infos_in.os_version()
self.linux_stat.os_kernal = self.os_infos_in.os_kernel()
self.linux_stat.os_date = self.os_infos_in.os_date()
return self.linux_stat

linux_status_main.py:

测试主函数(打印所获取的信息)

 #!/usr/bin/env python
# coding=UTF-8
import linux_status
import os_info #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

三、结果展示

由于刚刚接触Python语言,小程序刚刚写完感觉结构很冗余,分成一块一块的比较容易理解,感觉并不用把结果存进一个一个类里面,存到一个字典里面就可以(当时不是很熟悉字典),以后写的获取文件系统状态就是用的字典保存的,先写到这吧,慢慢写。。。

第一次写,希望大神多多提提意见~~~~~嘻嘻~~~~

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

  1. 运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程,把获取的信息存入数据库

    运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程 有关前两篇的链接: 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 运 ...

  2. 运用Python语言编写获取Linux基本系统信息(二):文件系统使用情况获取

    本文跟着上一篇文章继续写,上一篇文章的链接 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 一.随便说说 获取文件系统使用情况的思路和上一篇获取主要系统是 ...

  3. Python语言编写BP神经网络

    Python语言编写BP神经网络 2016年10月31日 16:42:44 ldy944758217 阅读数 3135   人工神经网络是一种经典的机器学习模型,随着深度学习的发展神经网络模型日益完善 ...

  4. linux 实现centos7在线升级最新版本内核

    Kernel  (内核)是操作系统的核心,掌握所有硬件设备的控制权,也就是说,你所希望计算机帮你完成的各项工作,都需要通过内核的帮助才能完成,当然,如果我们想完成的某个功能是内核没有的,则内核不会操控 ...

  5. [转载]Linux 环境下编译 0.11版本内核 kernel

    最近在看<.如果Clobber/Modify 为空,则其前面的冒号(:)必须省略. 2.如果Output,Input,Clobber/Modify都为空,Output,Input之前的冒号(:) ...

  6. <摘录>Linux 环境下编译 0.11版本内核 kernel

    系统环境:Fedora 13 + gcc-4.4.5 最近在看<linux内核0.11完全注释>一书,由于书中涉及汇编语言的地方众多,本人在大学时汇编语言学得一塌糊涂,所以实在看不下去了, ...

  7. 用python语言编写网络爬虫

    本文主要用到python3自带的urllib模块编写轻量级的简单爬虫.至于怎么定位一个网页中具体元素的url可自行百度火狐浏览器的firebug插件或者谷歌浏览器的自带方法. 1.访问一个网址 re= ...

  8. 使用python语言编写脚本控制freeswitch总结

    1.  在Linux环境下已经安装了freeswitch,(没安装freeswitch,请安装说明文档) 2.  进入源代码目录 cd  libs/esl 目录下 首先安装 yum install p ...

  9. Python语言编写脚本时,对日期控件的处理方式

    对日期控件,日期控件的输入控一般是不能手动输入的:把readonly属性去掉就好 其实很简单,我们不去搞时间日期空间,我们把它当成一个普通的input框处理就好了! 但是,很多此类型input框都是禁 ...

随机推荐

  1. leetcode 刷题之路 64 Construct Binary Tree from Inorder and Postorder Traversal

    Given inorder and postorder traversal of a tree, construct the binary tree. Note: You may assume tha ...

  2. 【分享】事实上,你VS界面也可以如此,VS界面美化

    阿土.它直接在地图上. 第一节目:Transformers(变形金刚) 第二方案:Assassin's Creed (刺客信条) watermark/2/text/aHR0cDovL2Jsb2cuY3 ...

  3. WEBAPP组件化时代, Web Components

    polymer   ==> http://docs.polymerchina.org/ angular   ==> http://www.ngnice.com/docs/guide scr ...

  4. HTML系列(九):表单

    一.表单标签form 表单标签用于申明表单,定义采集数据的范围,即<form>包含的数据将被提交到数据库上,包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法. 表单能够包 ...

  5. Android程序捕获未处理异常,处理与第三方方法冲突时的异常传递

    自己的android程序对异常进行了处理,用的也是网上比较流行的CrashHandler,代码如下,就是出现了未处理的异常程序退出,并收集收集设备信息和错误信息仪器保存到SD卡,这里没有上传到服务器. ...

  6. Java基础之"=="和 和 equals 方法的区别

    一."=="操作符 ==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作 ...

  7. hexo博客部署到github无法上传的问题

    博客生成之后,按照网上别人的教程,讲项目部署到github上,修改_config.yaml中的deploy部分如下所示: deploy: type: git repository: https://g ...

  8. R与数据分析旧笔记(十四) 动态聚类:K-means

    动态聚类:K-means方法 动态聚类:K-means方法 算法 选择K个点作为初始质心 将每个点指派到最近的质心,形成K个簇(聚类) 重新计算每个簇的质心 重复2-3直至质心不发生变化 kmeans ...

  9. 高级PHP工程师所应该具备一些技能

          很多面试,很多人员能力要求都有"PHP高级工程师的字眼",如果您真心喜欢PHP,并且您刚起步,那么我简单说说一个PHP高级工程师所应该具备的,希望给初级或已经达到中级的 ...

  10. [暂停一天]从零开始PHP学习 - 第六天

    今天这个系列没有时间去写了 在公司完善一个项目     已经备好6瓶咖啡 两天 + 一夜 完成这个项目  真是苦逼 诶 反正这几天 明白一个道理:别以为你多牛B 你不会的东西多了!  比你牛B的人也多 ...