platform --- 獲取底層平臺的標識數據?

源代碼: Lib/platform.py


備注

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

跨平臺?

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

查詢(xún)給定的可執行文件(默認為 Python 解釋器二進(jìn)制碼文件)來(lái)獲取各種架構信息。

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

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

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

備注

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

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

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

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

platform.node()?

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

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

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

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

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

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

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

platform.processor()?

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

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

platform.python_build()?

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

platform.python_compiler()?

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

platform.python_branch()?

返回一個(gè)標識 Python 實(shí)現的 SCM 分支的字符串。

platform.python_implementation()?

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

platform.python_revision()?

返回一個(gè)標識 Python 實(shí)現的 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()?

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

platform.system_alias(system, release, version)?

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

platform.version()?

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

platform.uname()?

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

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

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

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

Java平臺?

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

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

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

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

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

Unix 平臺?

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

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

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

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

Linux 平臺?

platform.freedesktop_os_release()?

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

/etc/os-release/usr/lib/os-release 均無(wú)法讀取時(shí)將引發(fā) OSError 或其子類(lèi)。

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

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