Python Glossary English

Python 3.0+osфункция

os.device_encoding

os — терминал и устройства

Возвращает кодировку, связанную с устройством по файловому дескриптору (или None, если это не терминал).

Синтаксис

os.device_encoding(fd)

Для дескриптора, не связанного с терминалом, — файла, канала, перенаправленного вывода — возвращает None. Поэтому кодировку вывода программы, запущенной с перенаправлением, по ней не узнать; в режиме UTF-8 (с Python 3.7) стандартные потоки используют UTF-8 независимо от терминала. Проверить текущую кодировку проще через sys.stdout.encoding.

Примеры

import os
enc = os.device_encoding(0)
print(enc is None or isinstance(enc, str))   # → True (в терминале это кодировка вроде 'UTF-8', в консоли Windows 'cp866'; None, если stdin перенаправлен из файла или пайпа)
fd = os.open('demo.txt', os.O_CREAT | os.O_WRONLY)
print(os.device_encoding(fd))   # → None (обычный файл не терминал)
os.close(fd)
print(os.device_encoding(999))   # → None (для неверного дескриптора исключения не будет)

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности