【问题标题】:How to get the system info with Python?如何使用 Python 获取系统信息?
【发布时间】:2011-03-07 09:36:56
【问题描述】:

我需要获取软件在什么环境下运行的信息。 python 有为此目的的库吗?

我想知道以下信息。

  • 操作系统名称/版本
  • CPU 名称、时钟速度
  • CPU 核心数
  • 内存大小

【问题讨论】:

标签: python system-information


【解决方案1】:

其中一些可以从platform 模块获得:

>>> import platform
>>> platform.machine()
'x86'
>>> platform.version()
'5.1.2600'
>>> platform.platform()
'Windows-XP-5.1.2600-SP2'
>>> platform.uname()
('Windows', 'name', 'XP', '5.1.2600', 'x86', 'x86 Family 6 Model 15 Stepping 6, GenuineIntel')
>>> platform.system()
'Windows'
>>> platform.processor()
'x86 Family 6 Model 15 Stepping 6, GenuineIntel'

【讨论】:

  • 你打败了我。另外,我不知道其他操作系统,但在 Unix 上运行 platform.dist() 可能会更好,因为它更简洁。
  • platform.dist() 在 Python 3.5 中已弃用
  • 幸好我们得到了这个。它非常失踪。
【解决方案2】:
#Shamelessly combined from google and other stackoverflow like sites to form a single function

import platform,socket,re,uuid,json,psutil,logging

def getSystemInfo():
    try:
        info={}
        info['platform']=platform.system()
        info['platform-release']=platform.release()
        info['platform-version']=platform.version()
        info['architecture']=platform.machine()
        info['hostname']=socket.gethostname()
        info['ip-address']=socket.gethostbyname(socket.gethostname())
        info['mac-address']=':'.join(re.findall('..', '%012x' % uuid.getnode()))
        info['processor']=platform.processor()
        info['ram']=str(round(psutil.virtual_memory().total / (1024.0 **3)))+" GB"
        return json.dumps(info)
    except Exception as e:
        logging.exception(e)

json.loads(getSystemInfo())

输出样本:

{
 'platform': 'Linux',
 'platform-release': '5.3.0-29-generic',
 'platform-version': '#31-Ubuntu SMP Fri Jan 17 17:27:26 UTC 2020',
 'architecture': 'x86_64',
 'hostname': 'naret-vm',
 'ip-address': '127.0.1.1',
 'mac-address': 'bb:cc:dd:ee:bc:ff',
 'processor': 'x86_64',
 'ram': '4 GB'
}

【讨论】:

  • 在 Windows 中获取 GPU 名称,import wmi # pip install wmicomputer = wmi.WMI()gpu_info = computer.Win32_VideoController()[0].name
  • 断章取义的评论。 can we please don't use Java naming style in python. like the function name in the answer. get_system_info() is more pythonic than java camelcase method naming
【解决方案3】:

os module 具有 uname 功能,可以获取有关操作系统和版本的信息:

>>> import os
>>> os.uname()

对于我的系统,运行带有 2.6.18 内核的 CentOS 5.4 会返回:

('Linux', 'mycomputer.domain.user','2.6.18-92.1.22.el5PAE', '#1 SMP Tue 2008 年 12 月 16 日 12:36:25 EST', 'i686')

【讨论】:

  • 注意:这只适用于 *nix。来自官方文档:“可用性:最新的 Unix 风格。”
  • 注意:这也适用于 ProductName:Mac OS X |产品版本:10.14.2 |构建版本:18C54
【解决方案4】:

找到这个简单的代码

import platform

print("="*40, "System Information", "="*40)
uname = platform.uname()
print(f"System: {uname.system}")
print(f"Node Name: {uname.node}")
print(f"Release: {uname.release}")
print(f"Version: {uname.version}")
print(f"Machine: {uname.machine}")
print(f"Processor: {uname.processor}")

【讨论】:

    猜你喜欢
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    • 2015-07-20
    • 2016-03-12
    相关资源
    最近更新 更多