一 OS模块
- python中内置了一个操作系统相关的模块
os模块
这个模块提供了多数操作系统的功能接口函数。在不同系统执行时,os模块会自适应于不同的操作系统平台,调用不同的接口;
2. 导入os模块:
import os
- 常用命令:
获取系统名称 os.name
获取当前工作目录 ;os.getCwd()
执行命令: os.system(‘命令行’)
文件和文件夹相关:
os.remove(path) 删除指定的文件
os.rename(src,dest) 重命名文件或目录
os.stat(path) 返回文件的所有属性
os.listdir(path) 返回path目录下的文件和目录列表
os.mkdir(path) 创建目录
os.makedirs(path1/path2/path3/…) 创建多级目录
os.rmdir(path) 删除目录
os.removedirs(path1/path2/path3/…) 删除多级目录
路径相关函数:
os.path.isabs(path) 判断path是否是绝对路径
os.path.isdir(path) 判断path是否为目录
os.path.isfile(path) 判断path是否为文件
os.path.exists(path) 判断指定路径的文件是否存在
os.path.getsize(filename) 返回文件大小
os.path.abspath(path) 返回绝对路径
二 platform模块
platform模块也是系统内置模块,给我们提供了很多方法去获取操作系统的信息
参考以下注释信息:
import platform
platform.platform() #获取操作系统名称及版本号,
platform.version() #获取操作系统版本号,
platform.architecture() #获取操作系统的位数
platform.machine() #计算机类型,
platform.node() #计算机的网络名称,
platform.processor() #计算机处理器信息,
platform.uname() #包含上面所有的信息汇总
三 扩展第三方库psutil
psutil是一个跨平台库能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。它主要用来做系统监控,性能分析,进程管理。它实现了同等命令行工具提供的功能,如ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap等。
官网地址:http://pythonhosted.org/psutil/
安装方式: pip install psutil
示例代码:
import psutil
import time
import os
class testpsutil(object):
def testsp(self):
monitor_name=set(['httpd','keepalived']) # 用户指定的监控的服务进程名称
monitor_map={
'httpd':'systemctl restart httpd',
'keepalived':'systemctl restart keepalived' # 系统在进程down掉后,自动重启
}
proc_dict={}
proc_name=set() # 系统检测的进程名称
while True:
for proc in psutil.process_iter(attrs=['pid','name']):
proc_dict[proc.info['pid']]=proc.info['name']
proc_name.add(proc.info['name'])
# 通过集合的形式来找出停掉的进程名,前者有但是后者没有
proc_stop=monitor_name-proc_name
# 如果确实有监控的进程停掉了 需要自动重启功能
if proc_stop:
for p in proc_stop:
p_name=p
# 执行重启命令,然后判断是否重启成功
os.system(monitor_map[p_name])
四 Python操作系统信息
1.提示用户输入选项,输出对应选项类型的平台信息
def select(self,config):
# 交互式选择程序
print(config['options_tip'])
options=config['options']
selects=[]
for key in options:
desc=options[key]["desc"]
selects.append(key)
print(f"*{key}:{desc}")
print()
input_tip=config['input_tip']
select_tip='/'.join(selects)
tip=f'{input_tip}[{select_tip},按q退出]:'
while True:
key=input(tip)
if key=='q':
break
option=options.get(key)
if(option):
desc=option['desc']
print(f'@{desc}:')
option['action']()
else:
print('[错误]不支持的选项')
def dump(self,tip,value):
# 打印提示
print(tip+':')
print(value)
print()
def dump_basic_info(self):
# 打印基础信息
self.dump('os.name',os.name)
def dump_path_info(self):
# 打印路径信息
self.dump('os.getcwd()',os.getcwd())
self.dump('os.get_exec_path()',os.get_exec_path())
def dump_env_info(self):
self.dump('os.environ',os.environ)
psu=testpsutil.testpsutil()
psu.select({
'options_tip':'通过platform可以查询一些信息',
'input_tip':'请输入你感兴趣的信息',
'options':{
'b':{
'desc':'b is basic,系统基本信息',
'action':psu.dump_basic_info
},
'p':{
'desc':'p is path,路径信息',
'action':psu.dump_path_info
},
'e':{
'desc':'e is env,环境信息',
'action':psu.dump_env_info
}
}
})
- 提示用户输入选项,输出对应选项类型的平台信息
class pcpu():
def select(self,config,show_info):
print(config['options_tip'])
selects=[]
for key in config['options']:
option=config['options'][key]
selects.append(key)
print(f'{key}:{option}')
tip=f"{config['input_tip']}[{'/'.join(selects)},按q退出]:"
while True:
key=input(tip)
if key=='q':
break
else:
show_info(key)
print()
def test(self):
def show_info(key):
if key=='p':
# 打印平台信息
print(platform.architecture())
print(platform.platform())
print(platform.processor())
print(platform.machine())
elif key=='py':
# 打印Python信息
print(platform.python_build())
print(platform.python_implementation())
print(platform.python_compiler())
print(platform.python_version())
self.select({
'options_tip':'通过platform可以查询一些信息',
'input_tip':'请输入你感兴趣的信息',
'options':{
'p':'p is platform,平台信息',
'py':'py is python,Python信息'
},
},show_info)
if __name__ == '__main__':
pcpu=testpsutil.pcpu()
pcpu.test()