В чем преимущество Python модуля - fileinput?

В чем преимущество Python модуля - fileinput?

11.08.2018 11:15:39 Просмотров 38 Источник

Вопрос со стороны прикладного программирования рабочих скриптов под *nix системы.

До недавнего времени использовал стандартную конструкцию чтения файлов:

with open(file_path, 'r') as f:
    with_open_open = f.read() # f.readline(), f.readlines(), ...

Нашел в комментариях русского СО сообщества упоминание модуля fileinput за года 3 ни разу о нем ни где ни читал.

Вопрос: какие случаи использования этого модуля - оправданы и когда стоит избегать его использование?

У вопроса есть решение - Посмотреть?

https://ru.stackoverflow.com/questions/867556/%d0%92-%d1%87%d0%b5%d0%bc-%d0%bf%d1%80%d0%b5%d0%b8%d0%bc%d1%83%d1%89%d0%b5%d1%81%d1%82%d0%b2%d0%be-python-%d0%bc%d0%be%d0%b4%d1%83%d0%bb%d1%8f-fileinput#comment1403993_867556
если примеры интересны, для каких задач можно использовать этот модуль, то вот мои ответы, использующие fileinput — можно заголовки прочитать, чтобы общее представление получить и почитать код для интересных вам случаев.
https://ru.stackoverflow.com/questions/867556/%d0%92-%d1%87%d0%b5%d0%bc-%d0%bf%d1%80%d0%b5%d0%b8%d0%bc%d1%83%d1%89%d0%b5%d1%81%d1%82%d0%b2%d0%be-python-%d0%bc%d0%be%d0%b4%d1%83%d0%bb%d1%8f-fileinput#comment1404061_867556
@jfs Я из вашего поста и узнал про него. Спасибо ознакомлюсь.

Ответы - В чем преимущество Python модуля - fileinput? / В чем преимущество Python модуля - fileinput?

MaxU

11.08.2018 11:37:05

Из описания модуля:

This module implements a helper class and functions to quickly write a loop over standard input or a list of files. If you just want to read or write one file see open().

Т.е. все преимущества данного модуля открываются когда надо обрабатывать потоковый стандартный ввод (STDIN) или сразу несколько файлов. Для работы с единственным файлом разработчики советуют обратиться к open()...

Также данный модуль позволяет реализовывать фильтрацию / обработку файлов "по месту" (inplace=True), создавая резервную копию файла (backup=.extension)


Пример использования - реализация утилиты grep на Python:

#!/usr/bin/env python
import sys, re, fileinput
pattern= re.compile( sys.argv[1] )
for line in fileinput.input(sys.argv[2:]):
    if pattern.match( line ):
        print(fileinput.filename(), fileinput.filelineno(), line)
https://ru.stackoverflow.com/questions/867556/%d0%92-%d1%87%d0%b5%d0%bc-%d0%bf%d1%80%d0%b5%d0%b8%d0%bc%d1%83%d1%89%d0%b5%d1%81%d1%82%d0%b2%d0%be-python-%d0%bc%d0%be%d0%b4%d1%83%d0%bb%d1%8f-fileinput/867563#comment1403905_867563
Да документацию то читал, я просил конкретный пример из практики системного администирования (в английском есть понятие use case). Был просто удевлен, что об этом модуле так мало где написано, когда случаи работы с файлами рассматриваются. Хотя его поведение это 100% cat и чтение из stdin, что 99% ежедневной моей работы. Но спасибо за ваш ответ.
https://ru.stackoverflow.com/questions/867556/%d0%92-%d1%87%d0%b5%d0%bc-%d0%bf%d1%80%d0%b5%d0%b8%d0%bc%d1%83%d1%89%d0%b5%d1%81%d1%82%d0%b2%d0%be-python-%d0%bc%d0%be%d0%b4%d1%83%d0%bb%d1%8f-fileinput/867563#comment1638802_867563
По-моему в примере # не хватает?
https://ru.stackoverflow.com/questions/867556/%d0%92-%d1%87%d0%b5%d0%bc-%d0%bf%d1%80%d0%b5%d0%b8%d0%bc%d1%83%d1%89%d0%b5%d1%81%d1%82%d0%b2%d0%be-python-%d0%bc%d0%be%d0%b4%d1%83%d0%bb%d1%8f-fileinput/867563#comment1638812_867563
@nobody, спасибо, поправил :)
Закрыть X