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)