# -*- coding: utf-8 -*-"""Python第六期:系统资源使用率查询脚本功能:获取并显示 CPU、内存、磁盘使用率及主机基本信息作者:子瞻依赖:pip install psutil"""import psutilimport osimport socketdef get_host_ip(): """获取本机真实IP地址(非127.0.0.1)""" try: # 创建一个UDP连接(不实际发送数据) with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s: s.connect(('8.8.8.8', 80)) ip = s.getsockname()[0] return ip except Exception: return socket.gethostbyname(socket.gethostname())def get_cpu_info(): """获取CPU使用率(采样2秒)""" return psutil.cpu_percent(interval=2)def get_mem_info(): """获取内存使用信息""" mem = psutil.virtual_memory() return { 'total': mem.total, 'available': mem.available, 'used': mem.used, 'free': mem.free, 'percent': mem.percent }def get_disk_info(): """获取所有有效磁盘分区的使用情况""" disks = [] for part in psutil.disk_partitions(): # 跳过CD-ROM或无效文件系统 if 'cdrom' in part.opts or part.fstype == '': continue try: usage = psutil.disk_usage(part.device) # 提取盘符(Windows)或挂载点(Linux/macOS) if os.name == 'nt': # Windows drive_letter = part.device.rstrip('\\').rstrip('/') else: # Linux / macOS drive_letter = part.mountpoint disks.append({ 'device': drive_letter, 'total': usage.total, 'used': usage.used, 'free': usage.free, 'percent': usage.percent }) except PermissionError: continue # 忽略无权限访问的分区 return disksdef format_bytes(bytes_value): """将字节转换为易读单位(GB/MB)""" if bytes_value >= 1024 ** 3: return f"{bytes_value / (1024 ** 3):.2f} GB" elif bytes_value >= 1024 ** 2: return f"{bytes_value / (1024 ** 2):.2f} MB" else: return f"{bytes_value} B"def main(): print("====== 基本信息 ======") # 获取主机名:Windows 使用 COMPUTERNAME,Unix/Linux/macOS 使用 uname if os.name == 'nt': # Windows hostname = os.environ.get('COMPUTERNAME', 'unknown') else: # Linux / macOS import platform hostname = platform.node() or 'unknown' username = os.environ.get('USERNAME', os.environ.get('USER', 'unknown')) ip_addr = get_host_ip() print(f"主机名:{hostname}") print(f"IP地址:{ip_addr}") print(f"用户名:{username}") print("====================\n") print("===== 资源使用率 =====") # CPU cpu_percent = get_cpu_info() print(f"CPU使用率:{cpu_percent:.1f}%") # 内存 mem = get_mem_info() print(f"内存使用率:{mem['percent']:.1f}%") print(f" 总内存:{format_bytes(mem['total'])}") print(f" 已用内存:{format_bytes(mem['used'])}") print(f" 可用内存:{format_bytes(mem['available'])}") # 磁盘 disks = get_disk_info() for disk in disks: free_percent = 100 - disk['percent'] print(f"\n{disk['device']} 盘使用情况:") print(f" 使用率:{disk['percent']:.1f}%") print(f" 空闲率:{free_percent:.1f}%") print(f" 总容量:{format_bytes(disk['total'])}") print(f" 已用空间:{format_bytes(disk['used'])}") print(f" 可用空间:{format_bytes(disk['free'])}") print("\n====================") os.system('pause' if os.name == 'nt' else 'read -p "按回车键退出..."')if __name__ == '__main__': main()