python第十二天
目录
Pycharm使用技巧(转载)
Python第一天 安装 shell 文件
Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码
Python第三天 序列 数据类型 数值 字符串 列表 元组 字典
Python第四天 流程控制 ifelse条件判断 forwhile循环
Python第五天 文件访问 for循环访问文件 while循环访问文件 字符串的startswith函数和split函数
Python第六天 类型转换
Python第七天 函数 函数参数 函数变量 函数返回值 多类型传值 冗余参数 函数递归调用 匿名函数 内置函数 列表表达式/列表重写
Python第八天 模块 包 全局变量和内置变量__name__ Python path
Python第九天 面向对象 类定义 类的属性 类的方法 内部类 垃圾回收机制 类的继承
Python第十天 print >> f,和fd.write()的区别 stdout的buffer 标准输入 标准输出 标准错误 重定向
Python第十一天 异常处理 glob模块和shlex模块 打开外部程序和subprocess模块 subprocess类 Pipe管道 operator模块 sorted函数 生成器 walk模块 hashlib模块
收集主机信息
dmidecode
devname
macaddr
ipaddr
示例1
#!/usr/bin/env python
from subprocess import Popen, PIPE
p = Popen(['dmidecode'], stdout=PIPE)
data = p.stdout # 从标准输出读取 返回一个文件对象
lines = []
dmi = {}
a = True
while a:
line = data.readline()
if line.startswith('System Information'):
while True:
line = data.readline()
if line == '\n': # 如果读到空行,那么结束读取,整行就有一个换行符就是空行\n
a = False # 退出外层循环
break
else:
lines.append(line)
dmi_dic = dict([i.strip().split(':') for i in lines]) # 将列表变为字典
dmi['Manufacturer'] = dmi_dic['Manufacturer'].strip()
dmi['Product'] = dmi_dic['Product Name'].strip()
dmi['Serial'] = dmi_dic['Serial Number'].strip()
print dmi
示例2
#!/usr/bin/env python
from subprocess import Popen, PIPE
def getDmi():
p = Popen(['dmidecode'], stdout=PIPE)
data = p.stdout.read()
return data
def parseDmi(data):
lines = []
line_in = False
dmi_list = [i for i in data.split('\n') if i]
for line in dmi_list:
if line.startswith('System Information'):
line_in = True
continue
if line_in:
if not line[0].strip():
lines.append(line)
else:
break
return lines
def dmiDic():
dmi_dic = {}
data = getDmi()
lines = parseDmi(data)
dic = dict([i.strip().split(': ') for i in lines])
dmi_dic['vendor'] = dic['Manufacturer']
dmi_dic['product'] = dic['Product Name']
dmi_dic['sn'] = dic['Serial Number']
return dmi_dic
if __name__ == '__main__':
print dmiDic()
在Python里,以下这些对象相当于布尔值的False
空列表([] )空元组(() )
空字典({} )
空字符串('' )
零值(0 )
特殊对象None
对象False