Рубрики
Без рубрики

Python HowTo – Использование модуля Python fileinput

Привет всем! В этой статье мы рассмотрим использование модуля Python fileinput. Это очень удобный служебный модуль для быстрого прохождения

Автор оригинала: Pankaj Kumar.

Привет всем! В этой статье мы рассмотрим использование модуля Python fileinput. Это очень удобный служебный модуль для быстрого просмотра списка файлов в качестве входных данных.

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

Как использовать модуль Python fileinput

Это часть стандартной библиотеки Python, поэтому нет необходимости устанавливать этот модуль.

Чтобы импортировать этот модуль, мы можем использовать следующую инструкцию:

import fileinput

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

Однако, если вам нужно передать несколько файлов, мы можем быстро перебрать их все, используя file input .

Давайте теперь рассмотрим пример.

1. Чтение Нескольких Файлов

Основное использование этого модуля заключается в использовании fileinput.FileInput экземпляр в качестве контекстного менеджера .

import fileinput

with fileinput.FileInput(files=('a.txt', 'b.txt'), mode='r') as input:
    ...

Здесь мы можем передать столько файлов, сколько пожелаем, в аргумент ключевого слова files . Также допускается один файл.

Чтобы указать режим открытия файлов, мы должны указать аргумент ключевого слова mode .

Предположим, что в нашем каталоге есть следующие два файла a.txt и b.txt со следующим содержанием:

$ cat a.txt
Hello from AskPython!
This is a.txt

$ cat b.txt
Hello from AskPython!
this is b.txt

Теперь мы передадим оба этих файла в качестве входных данных в нашу примерную программу:

import fileinput

with fileinput.FileInput(files=('a.txt', 'b.txt'), mode='r') as input:
    for line in input:
        print(line)

Выход

Hello from AskPython!

This is a.txt

Hello from AskPython!

This is b.txt

Действительно, нам удалось распечатать оба файла! Пробел между каждой строкой возникает из-за print() добавления новой строки после каждого оператора. Поскольку в нашем файле уже есть новые строки, он напечатает дополнительную строку между ними.

2. Проверка первых строк и чтение имен файлов

Теперь у этого модуля есть другие методы, которые мы можем использовать в наших интересах.

Если вы хотите посмотреть имя файла, который в данный момент читается, мы можем использовать fileinput.filename() метод.

Однако это вернет None , если ни одна строка еще не была прочитана! Таким образом, вы можете использовать это только после первого чтения.

Если мы хотим узнать имя считываемого файла, мы можем использовать еще один флаг.

Метод fileinput.isfirstline() вернет True , если прочитанная строка является первой строкой! Таким образом, мы можем распечатать на консоли, если этот флаг верен.

Вот простой пример, используя ту же программу для a.txt и b.txt

import fileinput

with fileinput.FileInput(files=('a.txt', 'b.txt'), mode='r') as input:
    for idx, line in enumerate(input):
        if input.isfirstline() == True:
            # We will indicate the file name being read if the first line is read
            print(f'Reading file {input.filename()}...')
        print(line)

Выход

Reading file a.txt...
Hello from AskPython!

This is a.txt

Reading file b.txt...
Hello from AskPython!

This is b.txt

Как вы можете видеть, мы можем просмотреть имя считываемого файла, когда первая строка будет прочитана.

Аналогично, мы можем использовать другие вспомогательные методы для быстрого перебора наших входных файлов.

Чтобы узнать больше, вы можете просмотреть документацию .

Вывод

В этой статье мы узнали, как можно использовать модуль fileinput в Python для быстрого перебора входных файлов из stdin .

Рекомендации