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

源代码: Lib/platform.py


注解

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

跨平台

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

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

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

无法确定的值将按参数预设返回。如果位的给定为 '' , the sizeof(pointer) (或) sizeof(long) 在python版本<1.5.2)上,用作受支持指针大小的指示器。

功能依赖于系统的 file 命令来做实际的工作。这在大多数(如果不是所有的)UNIX平台和一些非UNIX平台上都可用,然后只有当可执行文件指向Python解释器时才可用。如果不满足上述需求,则使用合理的默认值。

注解

在MacOSX(或者其他平台)上,可执行文件可能是包含多个体系结构的通用文件。

为了得到当前解释器的“64位”,查询 sys.maxsize 属性:

is_64bits = sys.maxsize > 2**32
platform.machine()

返回机器类型,例如 'i386' . 如果无法确定值,则返回空字符串。

platform.node()

返回计算机的网络名称(可能不是完全限定的!)。如果无法确定值,则返回空字符串。

platform.platform(aliased=0, terse=0)

返回一个字符串,用尽可能多的有用信息标识基础平台。

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

如果 混叠的 如果为真,该函数将对报告不同于其公用名称的系统名称的各种平台使用别名,例如,SUNOS将报告为Solaris。这个 system_alias() 函数用于实现这一点。

设置 简洁的 若为true,则函数只返回标识平台所需的绝对最小信息。

在 3.8 版更改: 在MacOS上,函数现在使用 mac_ver() 如果返回非空的发布字符串,则获取MacOS版本,而不是达尔文版本。

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()

以字符串形式返回python版本 'major.minor.patchlevel' .

注意,与Python不同 sys.version ,返回的值将始终包含patchLevel(默认为0)。

platform.python_version_tuple()

以元组形式返回python版本 (major, minor, patchlevel) 弦乐的

注意,与Python不同 sys.version ,返回的值将始终包括patchLevel(默认为 '0'

platform.release()

返回系统的版本,例如 '2.2.0''NT' 如果无法确定值,则返回空字符串。

platform.system()

返回系统/OS名称,例如 'Linux''Darwin''Java''Windows' . 如果无法确定值,则返回空字符串。

platform.system_alias(system, release, version)

返回 (system, release, version) 别名为某些系统使用的常用营销名称。在某些情况下,它还会对信息进行一些重新排序,否则会导致混淆。

platform.version()

返回系统的发布版本,例如 '#3 on degas' . 如果无法确定值,则返回空字符串。

platform.uname()

相当可移植的uname接口。返回A namedtuple() 包含六个属性: systemnodereleaseversionmachineprocessor .

注意,这会添加第六个属性 (processor )不存在于 os.uname() 结果。另外,前两个属性的属性名不同; os.uname() 给他们起名 sysnamenodename .

无法确定的条目设置为 '' .

在 3.3 版更改: 结果从元组更改为NamedDuple。

Java平台

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

Jython的版本接口。

返回元组 (release, vendor, vminfo, osinfo) 具有 虚拟机信息 作为元组 (vm_name, vm_release, vm_vendor)奥西nfo 作为元组 (os_name, os_version, os_arch) . 无法确定的值将设置为作为参数给定的默认值(所有默认值均为 ''

Windows平台

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

从Windows注册表获取其他版本信息并返回元组 (release, version, csd, ptype) 参考操作系统版本、版本号、CSD级别(Service Pack)和操作系统类型(多/单处理器)。

作为提示: P型'Uniprocessor Free' 在单处理器NT机器和 'Multiprocessor Free' 在多处理器机器上。这个 “自由” 指没有调试代码的操作系统版本。它也可以说 “核对” 这意味着操作系统版本使用调试代码,即检查参数、范围等的代码。

platform.win32_edition()

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

3.8 新版功能.

platform.win32_is_iot()

返回 True 如果Windows版本由返回 win32_edition() 被认为是物联网版。

3.8 新版功能.

MAC操作系统平台

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

获取Mac OS版本信息并将其作为元组返回 (release, versioninfo, machine) 具有 版本信息 作为元组 (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 standard 并且在大多数Linux发行版中都可用。一个明显的例外是Android和基于Android的发行版。

加薪 OSError 或子类,当两者都不存在时 /etc/os-release 也不是 /usr/lib/os-release 可以读取。

如果成功,该函数将返回一个键和值为字符串的字典。值有其特殊字符,如 "$ 未引用。田野 NAMEID ,以及 PRETTY_NAME 都是按照标准来定义的。所有其他字段都是可选字段。供应商可能会包括其他字段。

请注意,像这样的字段 NAMEVERSION ,以及 VARIANT 是适合呈现给用户的字符串。程序应该使用如下字段 IDID_LIKEVERSION_ID ,或 VARIANT_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 新版功能.