Документация Python неофициальный перевод

platform.md

252 строк · 21.1 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.16/library/platform.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `platform` – Доступ к идентификационным данным базовой платформы89**Исходный код:** [Lib/platform.py](https://python-all.ru/src/main/Lib/platform.py)1011---1213> **Примечание**14>15> Конкретные платформы перечислены в алфавитном порядке, Linux включён в раздел Unix.1617## Кросс-платформенные1819#### `platform.architecture(executable=sys.executable, bits='', linkage='')`2021Запрашивает у указанного исполняемого файла (по умолчанию – двоичный файл интерпретатора Python) различные сведения об архитектуре.2223Возвращает кортеж `(bits, linkage)`, содержащий информацию о битовой архитектуре и формате компоновки, используемом для исполняемого файла. Оба значения возвращаются в виде строк.2425Значения, которые не удаётся определить, возвращаются в соответствии с настройками параметров по умолчанию. Если bits задан как `''`, то `sizeof(pointer)` (или `sizeof(long)` для Python версии \< 1.5.2) используется как показатель поддерживаемого размера указателя.2627Функция использует системную команду `file` для выполнения работы. Она доступна на большинстве (если не на всех) Unix-платформ и некоторых не-Unix-платформах, но только если исполняемый файл указывает на интерпретатор Python. Если указанные условия не выполняются, используются разумные значения по умолчанию.2829> **Примечание**30>31> В macOS (и, возможно, на других платформах) исполняемые файлы могут быть универсальными и содержать несколько архитектур.32>33> Чтобы получить сведения о «64-битности» текущего интерпретатора, надёжнее запросить атрибут [`sys.maxsize`](https://python-all.ru/3.16/library/sys.html#sys.maxsize):34>35> ```python36> is_64bits = sys.maxsize > 2**3237> ```3839#### `platform.machine()`4041Возвращает тип машины, например `'AMD64'`. Возвращается пустая строка, если значение не удаётся определить.4243Результат зависит от платформы и может различаться по регистру и соглашениям об именах.4445#### `platform.node()`4647Возвращает сетевое имя компьютера (может быть не полностью определённым!). Возвращается пустая строка, если значение не удаётся определить.4849#### `platform.platform(aliased=False, terse=False)`5051Возвращает одну строку, идентифицирующую базовую платформу с максимально возможным количеством полезной информации.5253Результат предназначен для *чтения человеком*, а не для машинного разбора. Он может выглядеть по-разному на разных платформах, и это предусмотрено.5455Если *aliased* равно true, функция будет использовать псевдонимы для различных платформ, которые сообщают системные имена, отличающиеся от общеупотребительных; например, SunOS будет отображаться как Solaris. Для реализации используется функция [`system_alias()`](https://python-all.ru/3.16/library/platform.html#platform.system_alias).5657Установка *terse* в true заставляет функцию возвращать только абсолютный минимум информации, необходимый для идентификации платформы.5859Изменено в версии 3.8: В macOS функция теперь использует [`mac_ver()`](https://python-all.ru/3.16/library/platform.html#platform.mac_ver), если он возвращает непустую строку релиза, для получения версии macOS вместо версии darwin.6061#### `platform.processor()`6263Возвращает (настоящее) имя процессора, например `'amdk6'`.6465Возвращается пустая строка, если значение не удаётся определить. Обратите внимание, что многие платформы не предоставляют эту информацию или просто возвращают то же значение, что и для [`machine()`](https://python-all.ru/3.16/library/platform.html#platform.machine). NetBSD делает это.6667#### `platform.python_build()`6869Возвращает кортеж `(buildno, builddate)`, содержащий номер сборки Python и дату в виде строк.7071#### `platform.python_compiler()`7273Возвращает строку, идентифицирующую компилятор, использованный для компиляции Python.7475#### `platform.python_branch()`7677Возвращает строку, идентифицирующую ветку SCM реализации Python.7879#### `platform.python_implementation()`8081Возвращает строку, идентифицирующую реализацию Python. Возможные возвращаемые значения: 'CPython', 'IronPython', 'Jython', 'PyPy'.8283#### `platform.python_revision()`8485Возвращает строку, идентифицирующую ревизию SCM реализации Python.8687#### `platform.python_version()`8889Возвращает версию Python в виде строки `'major.minor.patchlevel'`.9091Обратите внимание, что, в отличие от Python `sys.version`, возвращаемое значение всегда содержит номер патча (по умолчанию 0).9293#### `platform.python_version_tuple()`9495Возвращает версию Python в виде кортежа строк `(major, minor, patchlevel)`.9697Обратите внимание, что, в отличие от Python `sys.version`, возвращаемое значение всегда содержит номер патча (по умолчанию `'0'`).9899#### `platform.release()`100101Возвращает номер релиза системы, например `'2.2.0'` или `'NT'`. Пустая строка возвращается, если значение не удаётся определить.102103#### `platform.system()`104105Возвращает имя системы/ОС, например `'Linux'`, `'Darwin'`, `'Java'`, `'Windows'`. Если значение не удаётся определить, возвращается пустая строка.106107На iOS и Android эта функция возвращает видимое пользователю имя ОС (то есть `'iOS`, `'iPadOS'` или `'Android'`). Чтобы получить имя ядра (`'Darwin'` или `'Linux'`), используйте [`os.uname()`](https://python-all.ru/3.16/library/os.html#os.uname).108109#### `platform.system_alias(system, release, version)`110111Возвращает `(system, release, version)`, преобразованный в распространённые маркетинговые названия, используемые для некоторых систем. Также в некоторых случаях информация переупорядочивается, чтобы избежать путаницы.112113#### `platform.version()`114115Возвращает версию релиза системы, например `'#3 on degas'`. Если значение не удаётся определить, возвращается пустая строка.116117На iOS и Android это видимая пользователю версия ОС. Чтобы получить версию ядра Darwin или Linux, используйте [`os.uname()`](https://python-all.ru/3.16/library/os.html#os.uname).118119#### `platform.uname()`120121Достаточно переносимый интерфейс uname. Возвращает [`namedtuple()`](https://python-all.ru/3.16/library/collections.html#collections.namedtuple), содержащий шесть атрибутов: [`system`](https://python-all.ru/3.16/library/platform.html#platform.system), [`node`](https://python-all.ru/3.16/library/platform.html#platform.node), [`release`](https://python-all.ru/3.16/library/platform.html#platform.release), [`version`](https://python-all.ru/3.16/library/platform.html#platform.version), [`machine`](https://python-all.ru/3.16/library/platform.html#platform.machine) и [`processor`](https://python-all.ru/3.16/library/platform.html#platform.processor).122123[`processor`](https://python-all.ru/3.16/library/platform.html#platform.processor) разрешается поздно, по требованию.124125Примечание: имена первых двух атрибутов отличаются от имён, представленных [`os.uname()`](https://python-all.ru/3.16/library/os.html#os.uname), где они называются `sysname` и `nodename`.126127Записи, которые не удаётся определить, устанавливаются в `''`.128129Изменено в версии 3.3: Результат изменён с кортежа на [`namedtuple()`](https://python-all.ru/3.16/library/collections.html#collections.namedtuple).130131Изменено в версии 3.9: [`processor`](https://python-all.ru/3.16/library/platform.html#platform.processor) разрешается поздно, а не сразу.132133#### `platform.invalidate_caches()`134135Очищает внутренний кеш информации, такой как [`uname()`](https://python-all.ru/3.16/library/platform.html#platform.uname). Это обычно полезно, когда [`node()`](https://python-all.ru/3.16/library/platform.html#platform.node) платформы изменяется внешним процессом и требуется получить обновлённое значение.136137Добавлено в версии 3.14.138139## Платформа Windows140141#### `platform.win32_ver(release='', version='', csd='', ptype='')`142143Получает дополнительную информацию о версии из реестра Windows и возвращает кортеж `(release, version, csd, ptype)`, содержащий выпуск ОС, номер версии, уровень CSD (пакет обновления) и тип ОС (много/однопроцессорная). Значения, которые невозможно определить, устанавливаются в значения по умолчанию, заданные параметрами (все по умолчанию равны пустой строке).144145В качестве подсказки: *ptype* равен `'Uniprocessor Free'` на однопроцессорных машинах NT и `'Multiprocessor Free'` на многопроцессорных. `'Free'` относится к версии ОС, свободной от отладочного кода. Также может быть указано `'Checked'`, что означает, что версия ОС использует отладочный код, т.е. код, проверяющий аргументы, диапазоны и т.д.146147#### `platform.win32_edition()`148149Возвращает строку, представляющую текущую редакцию Windows, или `None`, если значение невозможно определить. Возможные значения включают, но не ограничиваются `'Enterprise'`, `'IoTUAP'`, `'ServerStandard'`, `'nanoserver'`.150151Добавлено в версии 3.8.152153#### `platform.win32_is_iot()`154155Возвращает `True`, если редакция Windows, возвращаемая [`win32_edition()`](https://python-all.ru/3.16/library/platform.html#platform.win32_edition), распознаётся как редакция IoT.156157Добавлено в версии 3.8.158159## Платформа macOS160161#### `platform.mac_ver(release='', versioninfo=('', '', ''), machine='')`162163Получает информацию о версии macOS и возвращает её в виде кортежа `(release, versioninfo, machine)`, где *versioninfo* – кортеж `(version, dev_stage, non_release_version)`.164165Записи, которые невозможно определить, устанавливаются в `''`. Все элементы кортежа являются строками.166167## Платформа iOS168169#### `platform.ios_ver(system='', release='', model='', is_simulator=False)`170171Получает информацию о версии iOS и возвращает её в виде [`namedtuple()`](https://python-all.ru/3.16/library/collections.html#collections.namedtuple) со следующими атрибутами:172173- `system` – имя ОС; либо `'iOS'`, либо `'iPadOS'`.174- `release` – номер версии iOS в виде строки (например, `'17.2'`).175- `model` – идентификатор модели устройства; это строка вида `'iPhone13,2'` для физического устройства или `'iPhone'` в симуляторе.176- `is_simulator` – логическое значение, указывающее, запущено ли приложение в симуляторе или на физическом устройстве.177178Записи, которые невозможно определить, устанавливаются в значения по умолчанию, заданные параметрами.179180## Платформы Unix181182#### `platform.libc_ver(executable=sys.executable, lib='', version='', chunksize=16384)`183184Пытается определить версию libc, с которой слинкован исполняемый файл (по умолчанию интерпретатор Python). Возвращает кортеж строк `(lib, version)`, которые по умолчанию равны переданным параметрам, если поиск не удался.185186Обратите внимание, что эта функция обладает глубокими знаниями о том, как разные версии libc добавляют символы в исполняемый файл, и, вероятно, применима только к исполняемым файлам, скомпилированным с помощью **gcc**.187188Файл читается и сканируется блоками по *chunksize* байт.189190## Платформы Linux191192#### `platform.freedesktop_os_release()`193194Получает идентификацию операционной системы из файла `os-release` и возвращает её в виде словаря. Файл `os-release` является стандартом [freedesktop.org](https://python-all.ru/3.16/library/platform.html) и доступен в большинстве дистрибутивов Linux. Заметным исключением является Android и дистрибутивы на его основе.195196Вызывает [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError) или подкласс, если не удаётся прочитать ни `/etc/os-release`, ни `/usr/lib/os-release`.197198В случае успеха функция возвращает словарь, где ключи и значения являются строками. Особые символы в значениях, такие как `"` и `$`, не экранируются. Поля `NAME`, `ID` и `PRETTY_NAME` всегда определены в соответствии со стандартом. Все остальные поля необязательны. Производители могут добавлять дополнительные поля.199200Обратите внимание, что такие поля, как `NAME`, `VERSION` и `VARIANT`, являются строками, предназначенными для отображения пользователям. Программам следует использовать такие поля, как `ID`, `ID_LIKE`, `VERSION_ID` или `VARIANT_ID`, для идентификации дистрибутивов Linux.201202Пример:203204```python205def get_like_distro():206    info = platform.freedesktop_os_release()207    ids = [info["ID"]]208    if "ID_LIKE" in info:209        # идентификаторы разделяются пробелами и упорядочены по приоритету210        ids.extend(info["ID_LIKE"].split())211    return ids212```213214Добавлено в версии 3.10.215216## Платформа Android217218#### `platform.android_ver(release='', api_level=0, manufacturer='', model='', device='', is_emulator=False)`219220Получает информацию об устройстве Android. Возвращает [`namedtuple()`](https://python-all.ru/3.16/library/collections.html#collections.namedtuple) со следующими атрибутами. Значения, которые не удалось определить, устанавливаются в значения по умолчанию, заданные параметрами.221222- `release` – версия Android в виде строки (например, `"14"`).223- `api_level` – уровень API работающего устройства в виде целого числа (например, `34` для Android 14). Чтобы узнать уровень API, под который был собран Python, см. [`sys.getandroidapilevel()`](https://python-all.ru/3.16/library/sys.html#sys.getandroidapilevel).224- `manufacturer` – [название производителя](https://python-all.ru/3.16/library/platform.html).225- `model` – [название модели](https://python-all.ru/3.16/library/platform.html) – обычно маркетинговое название или номер модели.226- `device` – [название устройства](https://python-all.ru/3.16/library/platform.html) – обычно номер модели или кодовое имя.227- `is_emulator``True`, если устройство является эмулятором; `False`, если это физическое устройство.228229Google ведёт [список известных названий моделей и устройств](https://python-all.ru/3.16/library/platform.html).230231Добавлено в версии 3.13.232233## Использование командной строки234235`platform` также можно вызвать напрямую с помощью [`-m`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-m) ключа интерпретатора:236237```python238python -m platform [--terse] [--nonaliased] [{nonaliased,terse} ...]239```240241Принимаются следующие опции:242243#### `--terse`244245Выводит краткую информацию о платформе. Это эквивалентно вызову [`platform.platform()`](https://python-all.ru/3.16/library/platform.html#platform.platform) с аргументом *terse*, установленным в `True`.246247#### `--nonaliased`248249Выводит информацию о платформе без псевдонимов имён систем/ОС. Это эквивалентно вызову [`platform.platform()`](https://python-all.ru/3.16/library/platform.html#platform.platform) с аргументом *aliased*, установленным в `True`.250251Также можно передать один или несколько позиционных аргументов (`terse`, `nonaliased`) для явного управления форматом вывода. Они ведут себя аналогично соответствующим опциям.252