You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python标准库获取指定格式的系统特定信息?

可用标准库列表

  • platform:负责提取操作系统版本信息
  • datetime:负责格式化带时区偏移的系统时间
  • zoneinfo(Python 3.9+ 内置):负责获取IANA格式时区标识
  • os、sys:负责系统层参数读取,适配不同操作系统的内存、系统属性获取逻辑

实现示例代码

import platform
import datetime
from zoneinfo import ZoneInfo
import os
import sys

def get_system_info():
    info = {}
    # 获取OS信息
    if platform.system() == "Linux":
        os_release = platform.freedesktop_os_release()
        info["OS"] = f"{os_release['NAME']} {os_release['VERSION_ID']}"
    elif platform.system() == "Windows":
        info["OS"] = f"Windows {platform.version()}"
    elif platform.system() == "Darwin":
        info["OS"] = f"macOS {platform.mac_ver()[0]}"
    
    # 获取总内存(单位:Byte)
    mem_total = 0
    if sys.platform.startswith("linux"):
        with open("/proc/meminfo", "r") as f:
            for line in f:
                if line.startswith("MemTotal:"):
                    mem_total = int(line.split()[1]) * 1024
                    break
    elif sys.platform == "win32":
        import ctypes
        class MEMORYSTATUSEX(ctypes.Structure):
            _fields_ = [
                ("dwLength", ctypes.c_ulong),
                ("dwMemoryLoad", ctypes.c_ulong),
                ("ullTotalPhys", ctypes.c_ulonglong),
                ("ullAvailPhys", ctypes.c_ulonglong),
                ("ullTotalPageFile", ctypes.c_ulonglong),
                ("ullAvailPageFile", ctypes.c_ulonglong),
                ("ullTotalVirtual", ctypes.c_ulonglong),
                ("ullAvailVirtual", ctypes.c_ulonglong),
                ("ullAvailExtendedVirtual", ctypes.c_ulonglong),
            ]
        stat = MEMORYSTATUSEX()
        stat.dwLength = ctypes.sizeof(MEMORYSTATUSEX)
        ctypes.windll.kernel32.GlobalMemoryStatusEx(ctypes.byref(stat))
        mem_total = stat.ullTotalPhys
    elif sys.platform == "darwin":
        import subprocess
        mem_total = int(subprocess.check_output(["sysctl", "-n", "hw.memsize"]).strip())
    info["Memory"] = mem_total

    # 获取带时区偏移的系统时间
    now = datetime.datetime.now(ZoneInfo('localtime'))
    info["system Time"] = now.strftime("%H:%M:%S %z")

    # 获取IANA格式时区名称
    info["Timezone"] = str(now.tzinfo)

    return info

if __name__ == "__main__":
    system_info = get_system_info()
    # 按指定格式输出
    for k, v in system_info.items():
        if isinstance(v, str):
            print(f'    "{k}": "{v}",')
        else:
            print(f'    "{k}": {v},')

如果使用的Python版本低于3.9,可将zoneinfo替换为标准库time模块读取时区信息,需额外做时区名称映射即可得到IANA格式的时区标识。

内容的提问来源于stack exchange,提问作者SrTan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 23:15:02