上篇博客记录了Python的一些常用系统模块和其用法,包括注册表编程,创建可执行文件,调用外部文件等系统操作,这一节记录Windows系统编程的其他部分。
4. 判断操作系统的版本
某些情况下,程序可能依赖于特定版本操作系统中的功能或者希望程序在不同版本的操作系统中有不同的表现,因此能够在程序运行时获知操作系统的版本就变得非常有必要。Python支持使用多种不同的方法来获取版本的操作信息。
- 使用os模块
import os
print(os.popen('ver').read())
Microsoft Windows [版本 10.0.17134.1365]
- 使用sys模块
import sys
print(sys.getwindowsversion())
sys.getwindowsversion(major=10, minor=0, build=17134, platform=2, service_pack='')
- 使用platform模块
import platform
print(platform.platform())
Windows-10-10.0.17134-SP0
Windows管理规范(WMI)是Windows的一项核心技术,它以公共信息模型对象管理器为基础,是一个描述Windows操作系统构成单元的对象数据库。WMI是Windows的核心组件,通过编写WMI脚本和应用程序可以获取计算机系统、软件和硬件信息,还可以对计算机进行管理,比如开关机,重启计算机等
import wmi
wmiShell = wmi.WMI()
print(wmiShell.Win32_OperatingSystem()[0].Caption)
Microsoft Windows 10 教育版
5. 系统运维
系统运维涉及的内容非常广泛,包括文件系统、数据库、用户账号的维护,任务调度与分配,CPU、内存、网络带宽、硬盘空间、IP地址等资源的分配与运行状态监测,等等。
- Python标准库os提供了大量可用于系统运维的函数,如下表所示。另外,Python标准库sys,platform以及扩展库psutil等也提供了很多支持系统运维的功能。
5.1 Python扩展库psutil
跨平台的Python扩展库psutil可以用来查询进程或CPU,内存、硬盘以及网络等系统资源占用率等信息,常用于系统运行状态检测和维护。可以使用pip工具安装该库
- 查看CPU信息
import psutil
psutil.cpu_count() # 查看CPU核数
8
psutil.cpu_count(logical=False) # 查看物理CPU个数
4
psutil.cpu_percent() # 查看CPU利用率
5.5
psutil.cpu_percent(percpu=True) # 查看每个CPU的使用率
[9.6, 4.6, 6.8, 2.9, 5.3, 2.6, 4.1, 7.5]
psutil.cpu_times() # 查看CPU时间分配情况
scputimes(user=213684.48437499997, system=91249.70312499953, idle=2627046.046875, interrupt=5928.90625, dpc=2668.21875)
- 查看开机时间
import datetime
t = psutil.boot_time()
datetime.datetime.fromtimestamp(t).strftime('%Y-%m-%d %H:%M:%S')
'2020-04-03 20:44:02'
- 查看内存信息
virtual_memory = psutil.virtual_memory()
transimite = 1024*1024*1024
virtual_memory.total/transimite # 内存总大小,单位G
7.855434417724609
virtual_memory.used /transimite # 已使用内存
4.221714019775391
virtual_memory.free /transimite # 空闲内存
3.6337203979492188
virtual_memory.percent # 内存使用率
53.7
- 查看磁盘信息
psutil.disk_partitions() # 查看所有分区信息
[sdiskpart(device='C:\\', mountpoint='C:\\', fstype='NTFS', opts='rw,fixed'),
sdiskpart(device='D:\\', mountpoint='D:\\', fstype='NTFS', opts='rw,fixed'),
sdiskpart(device='E:\\', mountpoint='E:\\', fstype='NTFS', opts='rw,fixed')]
psutil.disk_usage('c:\\') # 查看指定分区的磁盘空间情况
sdiskusage(total=255087415296, used=119552417792, free=135