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

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

Чтение строк из нескольких входных потоков

Синтаксис:

import fileinput

fp = fileinput.input(files=None, inplace=False, \
                     backup='', *, mode='r', openhook=None
                     encoding=None, errors=None)

Параметры:

  • files=None - последовательность из имен файлов,
  • inplace=False - перезаписывать файл на месте,
  • backup='' - str, расширение файлов резервной копии,
  • mode='r' - режим чтения последовательности файлов,
  • openhook=None - функция, возвращающая объект в виде файла.
  • encoding=None - кодировка файла (доступно с версии Python 3.10),
  • errors=None - режим обработки ошибок кодировки (доступно с версии Python 3.10).

Возвращаемое значение:

Описание:

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

Экземпляр класса будет использоваться как глобальное состояние для функций этого модуля, а также для итерации по строкам.

Параметры функции fileinput.input() будут переданы в конструктор класса fileinput.FileInput().

Экземпляр FileInput может использоваться как менеджер контекста в операторе with.

Изменено в Python 3.8: добавлены ключевые аргументы mode и openhook.

Изменено в Python 3.10: добавлены ключевые аргументы encoding и errors.

Примеры:

В примере ввод закрывается после выхода оператора with, даже если возникает исключение:

import fileinput

with fileinput.input(files=('spam.txt', 'eggs.txt'), encoding="utf-8") as f:
    for line in f:
        process(line)

Пример вывода комментариев в коде во всех файлах проекта, расположенного в определенном каталоге.

import fileinput, glob, os

# каталог проекта
path = 'appmy'
# паттерн поиска файлов по расширению
pattern = '**/*.py'

glob_path = os.path.join(path, pattern)
list_files = glob.glob(glob_path, recursive=True)

if list_files:
    with fileinput.FileInput(files=list_files) as fp:
        for line in fp:
            strip_line = line.lstrip()
            if strip_line.startswith('#'):
                print(fp.filename(), strip_line)