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
,machine
和processor
。請(qǐng)注意此函數(shù)添加的第六個(gè)屬性 (
processor
) 并不存在于os.uname()
的結(jié)果中。 并且前兩個(gè)屬性的屬性名稱也不一致;os.uname()
是將它們稱為sysname
和nodename
。無法確定的條目會(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
,ID
和PRETTY_NAME
總是會(huì)按照標(biāo)準(zhǔn)來定義。 所有其他字段都是可選的。 廠商可能會(huì)包括額外的字段。請(qǐng)注意
NAME
,VERSION
和VARIANT
等字段是適用于向用戶展示的字符串。 程序應(yīng)當(dāng)使用ID
,ID_LIKE
,VERSION_ID
或VARIANT_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 新版功能.