platform — 访问底层平台的识别数据 — Python 文档

来自菜鸟教程
Python/docs/3.10/library/platform
跳转至:导航、​搜索

platform — 访问底层平台的识别数据

源代码: :source:`Lib/platform.py`



笔记

特定平台按字母顺序列出,Linux 包含在 Unix 部分。


跨平台

platform.architecture(executable=sys.executable, bits=, linkage=)

查询给定的可执行文件(默认为 Python 解释器二进制文件)以获取各种架构信息。

返回一个元组 (bits, linkage),其中包含有关位体系结构和用于可执行文件的链接格式的信息。 这两个值都作为字符串返回。

无法确定的值将按照参数预设的给定返回。 如果位给出为 , 这sizeof(pointer) (或者sizeof(long)在 Python 版本 < 1.5.2 上)用作支持的指针大小的指标。

该函数依靠系统的file命令来完成实际工作。 这在大多数(如果不是全部)Unix 平台和一些非 Unix 平台上可用,并且仅当可执行文件指向 Python 解释器时才可用。 当不能满足上述需求时,使用合理的默认值。

笔记

在 macOS(也可能是其他平台)上,可执行文件可能是包含多种架构的通用文件。

要获得当前解释器的“64 位”,查询 sys.maxsize 属性更可靠:

is_64bits = sys.maxsize > 2**32
platform.machine()
返回机器类型,例如 'i386'。 如果无法确定值,则返回空字符串。
platform.node()
返回计算机的网络名称(可能不是完全限定的!)。 如果无法确定值,则返回空字符串。
platform.platform(aliased=0, terse=0)

返回标识底层平台的单个字符串,其中包含尽可能多的有用信息。

输出旨在 人类可读 而不是机器可解析。 它在不同平台上看起来可能不同,这是有意为之。

如果 aliased 为真,则该函数将为各种平台使用别名,这些平台报告的系统名称与其通用名称不同,例如 SunOS 将报告为 Solaris。 system_alias() 函数用于实现这一点。

terse 设置为 true 会导致函数仅返回识别平台所需的绝对最小信息。

3.8 版更改: 在 macOS 上,该函数现在使用 mac_ver(),如果它返回非空发布字符串,则获取 macOS 版本而不是 darwin 版本。

platform.processor()

返回(真实)处理器名称,例如 'amdk6'

如果无法确定值,则返回空字符串。 请注意,许多平台不提供此信息或仅返回与 machine() 相同的值。 NetBSD 就是这样做的。

platform.python_build()
返回一个元组 (buildno, builddate),以字符串形式说明 Python 内部版本号和日期。
platform.python_compiler()
返回一个字符串,标识用于编译 Python 的编译器。
platform.python_branch()
返回标识 Python 实现 SCM 分支的字符串。
platform.python_implementation()
返回标识 Python 实现的字符串。 可能的返回值是:“CPython”、“IronPython”、“Jython”、“PyPy”。
platform.python_revision()
返回标识 Python 实现 SCM 修订的字符串。
platform.python_version()

以字符串 'major.minor.patchlevel' 的形式返回 Python 版本。

请注意,与 Python sys.version 不同,返回值将始终包含补丁级别(默认为 0)。

platform.python_version_tuple()

以字符串的元组 (major, minor, patchlevel) 形式返回 Python 版本。

请注意,与 Python sys.version 不同,返回值将始终包含补丁级别(默认为 '0')。

platform.release()
返回系统的发布,例如 '2.2.0''NT' 如果无法确定值,则返回空字符串。
platform.system()
返回系统/操作系统名称,例如 'Linux''Darwin''Java''Windows'。 如果无法确定值,则返回空字符串。
platform.system_alias(system, release, version)
返回别名为用于某些系统的常见营销名称的 (system, release, version)。 在某些情况下,它还会对信息进行一些重新排序,否则会导致混淆。
platform.version()
返回系统的发布版本,例如 '#3 on degas'。 如果无法确定值,则返回空字符串。
platform.uname()

相当便携的uname 界面。 返回包含六个属性的 namedtuple()systemnodereleaseversion处理器

请注意,这添加了 os.uname() 结果中不存在的第六个属性 (processor)。 此外,前两个属性的属性名称不同; os.uname() 将它们命名为 sysnamenodename

无法确定的条目设置为

3.3 版更改: 结果从元组更改为命名元组。


Java平台

platform.java_ver(release=, vendor=, vminfo=(, , ), osinfo=(, , ))

Jython 的版本接口。

返回一个元组 (release, vendor, vminfo, osinfo),其中 vminfo 是一个元组 (vm_name, vm_release, vm_vendor),而 osinfo 是一个元组 (os_name, os_version, os_arch)。 无法确定的值设置为作为参数给出的默认值(所有默认值都为 )。


视窗平台

platform.win32_ver(release=, version=, csd=, ptype=)

从 Windows 注册表中获取其他版本信息,并返回一个元组 (release, version, csd, ptype),指的是操作系统版本、版本号、CSD 级别(服务包)和操作系统类型(多/单处理器)。

作为提示:ptype 在单处理器 NT 机器上是 'Uniprocessor Free',在多处理器机器上是 'Multiprocessor Free'Free 是指没有调试代码的操作系统版本。 它还可以声明 Checked 这意味着操作系统版本使用调试代码,即 检查参数、范围等的代码。

platform.win32_edition()

返回表示当前 Windows 版本的字符串。 可能的值包括但不限于 'Enterprise''IoTUAP''ServerStandard''nanoserver'

3.8 版中的新功能。

platform.win32_is_iot()

如果 win32_edition() 返回的 Windows 版本被识别为 IoT 版本,则返回 True

3.8 版中的新功能。


macOS 平台

platform.mac_ver(release=, versioninfo=(, , ), machine=)

获取 macOS 版本信息并将其作为元组 (release, versioninfo, machine) 返回,其中 versioninfo 是一个元组 (version, dev_stage, non_release_version)

无法确定的条目设置为 。 所有元组条目都是字符串。


Unix平台

platform.libc_ver(executable=sys.executable, lib=, version=, chunksize=16384)

尝试确定文件可执行文件(默认为 Python 解释器)所链接的 libc 版本。 返回字符串 (lib, version) 的元组,如果查找失败,则默认为给定参数。

请注意,此函数非常了解不同的 libc 版本如何向可执行文件添加符号,可能仅适用于使用 gcc 编译的可执行文件。

chunksize 字节的块读取和扫描文件。


Linux 平台

platform.freedesktop_os_release()

os-release 文件中获取操作系统标识并将其作为字典返回。 os-release 文件是 freedesktop.org 标准 ,可在大多数 Linux 发行版中使用。 一个明显的例外是 Android 和基于 Android 的发行版。

/etc/os-release/usr/lib/os-release 都无法读取时,引发 OSError 或子类。

成功时,该函数返回一个字典,其中键和值是字符串。 值的特殊字符如 "$ 未加引号。 字段 NAMEIDPRETTY_NAME 始终根据标准定义。 所有其他字段都是可选的。 供应商可能包括其他字段。

请注意,NAMEVERSIONVARIANT 等字段是适合向用户展示的字符串。 程序应使用 IDID_LIKEVERSION_IDVARIANT_ID 等字段来识别 Linux 发行版。

例子:

def get_like_distro():
    info = platform.freedesktop_os_release()
    ids = [info["ID"]]
    if "ID_LIKE" in info:
        # ids are space separated and ordered by precedence
        ids.extend(info["ID_LIKE"].split())
    return ids

3.10 版中的新功能。