Python Glossary English

все Python 3fileinputфункция

fileinput.hook_compressed()

хуки открытия

Хук открытия для fileinput: прозрачно распаковывает файлы .gz и .bz2, остальные открывает обычным open().

Синтаксис

fileinput.hook_compressed(filename, mode, *, encoding=None, errors=None)

Сжатие определяется только по расширению, а не по содержимому: архив без .gz прочитается как мусор. Текст из архива декодируется кодировкой локали, если не передать encoding='utf-8' в input() — на Windows это cp1251. Формат .xz хук не знает; inplace=True вместе с openhook запрещён.

Примеры

import fileinput, gzip
with gzip.open('log.txt.gz', 'wt', encoding='utf-8') as g:
    g.write('строка 1\nстрока 2\n')
open('plain.txt', 'w', encoding='utf-8').write('строка 3\n')
with fileinput.input(['log.txt.gz', 'plain.txt'], openhook=fileinput.hook_compressed, encoding='utf-8') as f:
    print(len(list(f)))  # → 3

См. также

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