platform
— 訪問底層平臺的標識資料¶
原始碼: Lib/platform.py
注意
特定平臺按字母順序排列,Linux 包含在 Unix 部分中。
跨平臺¶
- platform.architecture(executable=sys.executable, bits='', linkage='')¶
查詢給定可執行檔案(預設為 Python 直譯器二進位制檔案)的各種架構資訊。
返回一個元組
(bits, linkage)
,其中包含有關可執行檔案的位架構和連結格式的資訊。兩個值都作為字串返回。無法確定的值將按引數預設返回。如果 bits 給定為
''
,則sizeof(pointer)
(或 Python 版本 < 1.5.2 上的sizeof(long)
)將用作支援的指標大小的指示符。該函式依賴於系統的
file
命令來完成實際工作。這在大多數(如果不是全部)Unix 平臺和一些非 Unix 平臺上都可用,並且僅當可執行檔案指向 Python 直譯器時才可用。當不滿足上述需求時,將使用合理的預設值。注意
在 macOS(以及可能其他平臺)上,可執行檔案可能是包含多個架構的通用檔案。
要獲取當前直譯器的“64 位”,更可靠的方法是查詢
sys.maxsize
屬性is_64bits = sys.maxsize > 2**32
- platform.machine()¶
返回機器型別,例如
'AMD64'
。如果無法確定值,則返回空字串。
- platform.node()¶
返回計算機的網路名稱(可能不是完全限定的!)。如果無法確定值,則返回空字串。
- platform.platform(aliased=False, terse=False)¶
返回一個字串,儘可能多地包含有用的資訊,以標識底層平臺。
輸出旨在人類可讀,而不是機器可解析的。它在不同的平臺上可能看起來不同,這是有意為之的。
如果 aliased 為 true,該函式將使用各種平臺的別名,這些平臺的系統名稱與其常用名稱不同,例如 SunOS 將報告為 Solaris。
system_alias()
函式用於實現此目的。將 terse 設定為 true 會導致該函式僅返回識別平臺所需的絕對最少資訊。
在 3.8 版本中更改: 在 macOS 上,如果函式返回非空的釋出字串,則該函式現在使用
mac_ver()
來獲取 macOS 版本,而不是 darwin 版本。
- 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
不同,返回的值將始終包含補丁級別(預設為 0)。
- platform.python_version_tuple()¶
將 Python 版本作為字串元組
(major, minor, patchlevel)
返回。請注意,與 Python
sys.version
不同,返回的值將始終包含補丁級別(預設為'0'
)。
- platform.release()¶
返回系統的版本,例如
'2.2.0'
或'NT'
。如果無法確定值,則返回空字串。
- platform.system()¶
返回系統/作業系統名稱,例如
'Linux'
、'Darwin'
、'Java'
、'Windows'
。如果無法確定值,則返回空字串。在 iOS 和 Android 上,這會返回面向使用者的作業系統名稱(即
'iOS'
、'iPadOS'
或'Android'
)。要獲取核心名稱('Darwin'
或'Linux'
),請使用os.uname()
。
- platform.system_alias(system, release, version)¶
返回
(system, release, version)
,別名為某些系統使用的常用營銷名稱。在某些情況下,它還會對資訊進行重新排序,否則可能會引起混淆。
- platform.version()¶
返回系統的釋出版本,例如
'#3 on degas'
。如果無法確定該值,則返回空字串。在 iOS 和 Android 上,這是面向使用者的作業系統版本。要獲取 Darwin 或 Linux 核心版本,請使用
os.uname()
。
- platform.uname()¶
相當可移植的 uname 介面。返回一個
namedtuple()
,其中包含六個屬性:system
、node
、release
、version
、machine
和processor
。processor
在需要時延遲解析。注意:前兩個屬性名稱與
os.uname()
提供的名稱不同,在os.uname()
中它們被命名為sysname
和nodename
。無法確定的條目將設定為
''
。在 3.3 版本中更改: 結果從元組更改為
namedtuple()
。在 3.9 版本中更改:
processor
被延遲解析,而不是立即解析。
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)
。無法確定的值將設定為作為引數給出的預設值(所有引數都預設為''
)。自 3.13 版本起已棄用,將在 3.15 版本中刪除: 它在很大程度上未經測試,具有令人困惑的 API,並且僅對 Jython 支援有用。
Windows 平臺¶
- platform.win32_ver(release='', version='', csd='', ptype='')¶
從 Windows 登錄檔中獲取其他版本資訊,並返回一個元組
(release, version, csd, ptype)
,分別表示作業系統版本、版本號、CSD 級別(服務包)和作業系統型別(多處理器/單處理器)。無法確定的值將設定為作為引數給出的預設值(所有引數都預設為空字串)。提示:在單處理器 NT 計算機上,ptype 為
'Uniprocessor Free'
,在多處理器計算機上,ptype 為'Multiprocessor Free'
。'Free'
表示作業系統版本不包含除錯程式碼。它也可以宣告為'Checked'
,這意味著作業系統版本使用除錯程式碼,即檢查引數、範圍等的程式碼。
- platform.win32_edition()¶
返回一個字串,表示當前 Windows 版本,如果無法確定該值,則返回
None
。可能的值包括但不限於'Enterprise'
、'IoTUAP'
、'ServerStandard'
和'nanoserver'
。在 3.8 版本中新增。
- platform.win32_is_iot()¶
如果
win32_edition()
返回的 Windows 版本被識別為 IoT 版本,則返回True
。在 3.8 版本中新增。
macOS 平臺¶
- platform.mac_ver(release='', versioninfo=('', '', ''), machine='')¶
獲取 macOS 版本資訊,並將其作為元組
(release, versioninfo, machine)
返回,其中 versioninfo 是一個元組(version, dev_stage, non_release_version)
。無法確定的條目將設定為
''
。所有元組條目都是字串。
iOS 平臺¶
- platform.ios_ver(system='', release='', model='', is_simulator=False)¶
獲取 iOS 版本資訊,並將其作為
namedtuple()
返回,該namedtuple()
具有以下屬性:system
是作業系統名稱;為'iOS'
或'iPadOS'
。release
是 iOS 版本號,為字串(例如,'17.2'
)。model
是裝置型號識別符號;對於物理裝置,這將是一個類似於'iPhone13,2'
的字串,或者在模擬器上為'iPhone'
。is_simulator
是一個布林值,描述應用程式是在模擬器上還是在物理裝置上執行。
無法確定的條目將設定為作為引數給出的預設值。
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 標準,在大多數 Linux 發行版中都可用。一個明顯的例外是 Android 和基於 Android 的發行版。當無法讀取
/etc/os-release
或/usr/lib/os-release
時,會引發OSError
或其子類異常。成功時,該函式返回一個字典,其中鍵和值均為字串。值會去除其特殊字元的引號,例如
"
和$
。根據標準,始終定義了欄位NAME
、ID
和PRETTY_NAME
。所有其他欄位都是可選的。供應商可以包含其他欄位。請注意,諸如
NAME
、VERSION
和VARIANT
之類的欄位是適合向用戶展示的字串。程式應使用諸如ID
、ID_LIKE
、VERSION_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 版本中新增。
Android 平臺¶
- platform.android_ver(release='', api_level=0, manufacturer='', model='', device='', is_emulator=False)¶
獲取 Android 裝置資訊。返回一個帶有以下屬性的
namedtuple()
。無法確定的值將設定為作為引數給出的預設值。release
- Android 版本,作為字串(例如"14"
)。api_level
- 正在執行的裝置的 API 級別,作為整數(例如 Android 14 的34
)。要獲取 Python 構建時所針對的 API 級別,請參閱sys.getandroidapilevel()
。manufacturer
- 製造商名稱。model
- 型號名稱 – 通常是營銷名稱或型號。device
- 裝置名稱 – 通常是型號或代號。is_emulator
- 如果裝置是模擬器,則為True
;如果是物理裝置,則為False
。
Google 維護著一個 已知型號和裝置名稱列表。
在 3.13 版本中新增。