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Сообщить о неточности