platform --- 獲取底層平臺(tái)的標(biāo)識(shí)數(shù)據(jù)?

源代碼: Lib/platform.py


備注

特定平臺(tái)按字母順序排列,Linux 包括在 Unix 小節(jié)之中。

跨平臺(tái)?

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

查詢給定的可執(zhí)行文件(默認(rèn)為 Python 解釋器二進(jìn)制碼文件)來獲取各種架構(gòu)信息。

返回一個(gè)元素 (bits, linkage),其中包含可執(zhí)行文件所使用的位架構(gòu)和鏈接格式信息。 這兩個(gè)值均以字符串形式返回。

無法確定的值將返回為形參預(yù)設(shè)所給出的值。 如果給出的位數(shù)為 '',則會(huì)使用 sizeof(pointer) (或者當(dāng) Python 版本 < 1.5.2 時(shí)為 sizeof(long)) 作為所支持的指針大小的提示。

此函數(shù)依賴于系統(tǒng)的 file 命令來執(zhí)行實(shí)際的操作。 這在幾乎所有 Unix 平臺(tái)和某些非 Unix 平臺(tái)上只有當(dāng)可執(zhí)行文件指向 Python 解釋器時(shí)才可用。 當(dāng)以上要求不滿足時(shí)將會(huì)使用合理的默認(rèn)值。

備注

在 macOS (也許還有其他平臺(tái)) 上,可執(zhí)行文件可能是包含多種架構(gòu)的通用文件。

要獲取當(dāng)前解釋器的“64 位性”,更可靠的做法是查詢 sys.maxsize 屬性:

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

返回機(jī)器類型,例如 'i386'。 如果該值無法確定則會(huì)返回一個(gè)空字符串。

platform.node()?

返回計(jì)算機(jī)的網(wǎng)絡(luò)名稱(可能不是完整限定名稱!)。 如果該值無法確定則會(huì)返回一個(gè)空字符串。

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

返回一個(gè)標(biāo)識(shí)底層平臺(tái)的字符串,其中帶有盡可能多的有用信息。

輸出信息的目標(biāo)是“人類易讀”而非機(jī)器易解析。 它在不同平臺(tái)上可能看起來不一致,這是有意為之的。

如果 aliased 為真值,此函數(shù)將使用各種平臺(tái)不同與其通常名稱的別名來報(bào)告系統(tǒng)名稱,例如 SunOS 將被報(bào)告為 Solaris。 system_alias() 函數(shù)將被用于實(shí)現(xiàn)此功能。

terse 設(shè)為真值將導(dǎo)致此函數(shù)只返回標(biāo)識(shí)平臺(tái)所必須的最小量信息。

在 3.8 版更改: 在 macOS 上,此函數(shù)現(xiàn)在會(huì)在 mac_ver() 返回的發(fā)布版字符串非空時(shí)使用它,以便獲取 macOS 版本而非 darwin 版本。

platform.processor()?

返回(真實(shí)的)處理器名稱,例如 'amdk6'

如果該值無法確定則將返回空字符串。 請(qǐng)注意許多平臺(tái)都不提供此信息或是簡(jiǎn)單地返回與 machine() 相同的值。 NetBSD 則會(huì)提供此信息。

platform.python_build()?

返回一個(gè)元組 (buildno, builddate),以字符串表示的 Python 編譯代碼和日期。

platform.python_compiler()?

返回一個(gè)標(biāo)識(shí)用于編譯 Python 的編譯器的的字符串。

platform.python_branch()?

返回一個(gè)標(biāo)識(shí) Python 實(shí)現(xiàn)的 SCM 分支的字符串。

platform.python_implementation()?

返回一個(gè)標(biāo)識(shí) Python 實(shí)現(xiàn)的字符串。 可能的返回值有: 'CPython', 'IronPython', 'Jython', 'PyPy'。

platform.python_revision()?

返回一個(gè)標(biāo)識(shí) Python 實(shí)現(xiàn)的 SCM 修訂版的字符串。

platform.python_version()?

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

請(qǐng)注意此返回值不同于 Python sys.version,它將總是包括 patchlevel (默認(rèn)為 0)。

platform.python_version_tuple()?

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

請(qǐng)注意此返回值不同于 Python sys.version,它將總是包括 patchlevel (默認(rèn)為 '0')。

platform.release()?

Returns the system's release, e.g. '2.2.0' or 'NT'. An empty string is returned if the value cannot be determined.

platform.system()?

返回系統(tǒng)平臺(tái)/OS的名稱,例如 'Linux', 'Darwin', 'Java', 'Windows'。 如果該值無法確定則將返回一個(gè)空字符串。

platform.system_alias(system, release, version)?

返回別名為某些系統(tǒng)所使用的常見營銷名稱的 (system, release, version)。 它還會(huì)在可能導(dǎo)致混淆的情況下對(duì)信息進(jìn)行一些重排序操作。

platform.version()?

返回系統(tǒng)的發(fā)布版本信息,例如 '#3 on degas'。 如果該值無法確定則將返回一個(gè)空字符串。

platform.uname()?

具有高可移植性的 uname 接口。 返回包含六個(gè)屬性的 namedtuple(): system, node, release, version, machineprocessor。

請(qǐng)注意此函數(shù)添加的第六個(gè)屬性 (processor) 并不存在于 os.uname() 的結(jié)果中。 并且前兩個(gè)屬性的屬性名稱也不一致;os.uname() 是將它們稱為 sysnamenodename。

無法確定的條目會(huì)被設(shè)為 ''。

在 3.3 版更改: Result changed from a tuple to a namedtuple().

Java平臺(tái)?

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

Jython 的版本接口

返回一個(gè)元組 (release, vendor, vminfo, osinfo),其中 vminfo 為元組 (vm_name, vm_release, vm_vendor)osinfo 為元組 (os_name, os_version, os_arch)。 無法確定的值將設(shè)為由形參所給出的默認(rèn)值 (默認(rèn)均為 '')。

Windows平臺(tái)?

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

Get additional version information from the Windows Registry and return a tuple (release, version, csd, ptype) referring to OS release, version number, CSD level (service pack) and OS type (multi/single processor). Values which cannot be determined are set to the defaults given as parameters (which all default to an empty string).

一點(diǎn)提示: ptype 在單個(gè)處理器的 NT 機(jī)器上為 'Uniprocessor Free' 而在多個(gè)處理器的機(jī)器上為 'Multiprocessor Free''Free' 是指該 OS 版本沒有調(diào)試代碼。 它還可能顯示 'Checked' 表示該 OS 版本使用了調(diào)試代碼,即檢測(cè)參數(shù)、范圍等的代碼。

platform.win32_edition()?

Returns a string representing the current Windows edition, or None if the value cannot be determined. Possible values include but are not limited to 'Enterprise', 'IoTUAP', 'ServerStandard', and 'nanoserver'.

3.8 新版功能.

platform.win32_is_iot()?

如果 win32_edition() 返回的 Windows 版本被識(shí)別為 IoT 版則返回 True。

3.8 新版功能.

macOS Platform?

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

Get macOS version information and return it as tuple (release, versioninfo, machine) with versioninfo being a tuple (version, dev_stage, non_release_version).

無法確定的條目會(huì)被設(shè)為 ''。 所有元組條目均為字符串。

Unix 平臺(tái)?

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

嘗試確定可執(zhí)行文件(默認(rèn)為 Python 解釋器)所鏈接到的 libc 版本。 返回一個(gè)字符串元組 (lib, version),當(dāng)查找失敗時(shí)其默認(rèn)值將設(shè)為給定的形參值。

請(qǐng)注意此函數(shù)對(duì)于不同 libc 版本向可執(zhí)行文件添加符號(hào)的方式有深層的關(guān)聯(lián),可能僅適用于使用 gcc 編譯出來的可執(zhí)行文件。

文件將按 chunksize 個(gè)字節(jié)的分塊來讀取和掃描。

Linux 平臺(tái)?

platform.freedesktop_os_release()?

os-release 文件獲取操作系統(tǒng)標(biāo)識(shí)并將其作為一個(gè)字典返回。 os-release 文件是 freedesktop.org 標(biāo)準(zhǔn) 并在大多數(shù) Linux 發(fā)行版上可用。 一個(gè)重要的例外是 Android 和基于 Android 的發(fā)行版。

當(dāng) /etc/os-release/usr/lib/os-release 均無法讀取時(shí)將引發(fā) OSError 或其子類。

成功時(shí),該函數(shù)將返回一個(gè)字典,其中鍵和值均為字符串。 值當(dāng)中的特殊字符例如 "{TX-PL-LABEL}#x60;` 會(huì)被復(fù)原。 字段 ``NAME, IDPRETTY_NAME 總是會(huì)按照標(biāo)準(zhǔn)來定義。 所有其他字段都是可選的。 廠商可能會(huì)包括額外的字段。

請(qǐng)注意 NAME, VERSIONVARIANT 等字段是適用于向用戶展示的字符串。 程序應(yīng)當(dāng)使用 ID, ID_LIKE, VERSION_IDVARIANT_ID 等字段來標(biāo)識(shí) Linux 發(fā)行版。

示例:

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 新版功能.