platform --- 獲取底層平臺的標識數(shù)據(jù)?

源代碼: Lib/platform.py


備注

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

跨平臺?

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

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

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

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

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

備注

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

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

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

返回機器類型,例如 'i386'。 如果該值無法確定則會返回一個空字符串。

platform.node()?

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

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

返回一個標識底層平臺的字符串,其中帶有盡可能多的有用信息。

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

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

terse 設(shè)為真值將導致此函數(shù)只返回標識平臺所必須的最小量信息。

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

platform.processor()?

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

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

platform.python_build()?

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

platform.python_compiler()?

返回一個標識用于編譯 Python 的編譯器的的字符串。

platform.python_branch()?

返回一個標識 Python 實現(xiàn)的 SCM 分支的字符串。

platform.python_implementation()?

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

platform.python_revision()?

返回一個標識 Python 實現(xiàn)的 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()?

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)平臺/OS的名稱,例如 'Linux', 'Darwin', 'Java', 'Windows'。 如果該值無法確定則將返回一個空字符串。

platform.system_alias(system, release, version)?

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

platform.version()?

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

platform.uname()?

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

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

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

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

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)。 無法確定的值將設(shè)為由形參所給出的默認值 (默認均為 '')。

Windows平臺?

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

一點提示: ptype 在單個處理器的 NT 機器上為 'Uniprocessor Free' 而在多個處理器的機器上為 'Multiprocessor Free'。 'Free' 是指該 OS 版本沒有調(diào)試代碼。 它還可能顯示 'Checked' 表示該 OS 版本使用了調(diào)試代碼,即檢測參數(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 版本被識別為 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).

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

Unix 平臺?

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

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

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

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

Linux 平臺?

platform.freedesktop_os_release()?

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

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

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

請注意 NAME, VERSIONVARIANT 等字段是適用于向用戶展示的字符串。 程序應(yīng)當使用 ID, ID_LIKE, VERSION_IDVARIANT_ID 等字段來標識 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 新版功能.