Сообщить об ошибке.

Модуль fileinput в Python, чтение списка файлов

Чтение списка файлов за один проход

Модуль fileinput реализует вспомогательный класс и функции для быстрого написания цикла поверх стандартного ввода или списка файлов. Если вы просто хотите прочитать или записать один файл, смотрите функцию open().

Типичное использование модуля fileinput:

import fileinput
for line in fileinput.input():
    process(line)

Этот код перебирает строки всех файлов, по перечисленных в sys.argv[1:], если список пуст, то по умолчанию читает sys.stdin. Если имя файла равно '-', то оно также заменяется на sys.stdin, а необязательные аргументы mode и openhook игнорируются. Также допускается одно имя файла.

Для указания альтернативный списка имен файлов, его необходимо передать в качестве первого аргумента для функции модуля fileinput.input()

Смотрите очень востребованный пример "Объединения нескольких файлов в один".

Все файлы открываются в текстовом режиме по умолчанию, но это поведение можно переопределить в аргументе mode в функции fileinput.input() или классе fileinput.FileInput(). Если во время открытия или чтения файла возникает ошибка ввода-вывода, то поднимается исключение OSError.

Если sys.stdin используется более одного раза, второе и последующее использование не вернет никаких строк, за исключением интерактивного использования, если оно было явно сброшено. Например, с использованием sys.stdin.seek(0).

Пустые файлы открываются и сразу закрываются; Единственный раз, когда их присутствие в списке имен файлов вообще заметно, это когда последний открытый файл пуст.

Строки из файлов возвращаются с символами новой строки newlines, это означает, что последняя строка в файле может быть пустой.

Можно управлять тем, как файлы открываются, предоставляя хук открытия через аргумент openhook для функции fileinput.input() или класса fileinput.FileInput(). Хук должен быть функцией, которая принимает два аргумента, имя файла filename и режим mode, и возвращает соответственно открытый файловый объект. Модуль fileinput предусматривает два полезных хука.

Необязательная фильтрация на месте: если ключевой аргумент inplace=True передается в fileinput.input() или в конструктор fileinput.FileInput(), то файл перемещается в файл резервной копии, а стандартный вывод направляется во входной файл. Если файла резервной копии с таким же именем существует, то он будет заменен без уведомления. Это поведение позволяет написать фильтр, который перезаписывает свой входной файл на месте. Аргумент backup указывает расширение для файла резервной копии, по умолчанию расширение backup='.bak'. Файл резервной копии удаляется при закрытии выходного файла. Фильтрация на месте отключается при считывании стандартного ввода.


Функция input() модуля fileinput в Python

Функция input() модуля fileinput создает экземпляр класса fileinput.FileInput() и возвращает глобальное состояние чтения потока.

Управление чтением списка файлов модуля fileinput в Python

Представленные в этом разделе функции используют глобальное состояние чтения потока из списка файлов, созданное функцией fileinput.input(). Если нет активного состояния, вызывается исключение RuntimeError.

Класс FileInput() модуля fileinput в Python

Класс FileInput() модуля fileinput возвращает объект FileInput и является реализацией состояния потока строк из последовательности файлов.

Хуки файлов модуля fileinput в Python

При чтении потока из списка файлов можно управлять тем, как файлы открываются, предоставляя хук открытия через аргумент openhook. Модуль fileinput предусматривает два полезных хука.

Объединение нескольких файлов в один, модуль fileinput Python

В примере будем искать все файлы, расположенные в директории path, совпадающие с паттерном pattern и записывать данные из всех найденных файлов в новый общий файл new_file.all.