Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 7, 2022 07:50:00

vladimir_vl_vlad
Зарегистрирован: 2021-07-16
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Чтение файла внутри итератора

Есть класс, содержащий методы iter и next и текстовый файл my_text.txt Нужно внутри этого класса открыть текстовый файл и прочитать его построчно. Не могу понять как это сделать.

 file_name = 'my_text.txt'
class ReadFile:
    
    def __init__(self, file_name):
        pass
    
    def __iter__(self):
        pass
    
    def __next__(self):
        pass

Офлайн

#2 Апрель 7, 2022 09:45:52

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Чтение файла внутри итератора

  
class It:
    def __init__(self, file_name):
        self.file_name = file_name
        self.fin = None
     
    def __iter__(self):
        self.fin = open(self.file_name, encoding='utf-8')
        return self.fin
     
    def __next__(self):
        try:
            line = next(self.fin)
        except StopIteration:
            self.fin.close()
            self.fin = None
            raise
        return line
 
it = It('/etc/passwd')
 
for i in it:
    print(i)
 
for i in it:
    print(i)



Отредактировано py.user.next (Апрель 7, 2022 09:47:47)

Офлайн

#3 Апрель 8, 2022 04:15:35

vladimir_vl_vlad
Зарегистрирован: 2021-07-16
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Чтение файла внутри итератора

Спасибо. А еще такой вопрос: можно обращаться к итератору внутри самого класса?

Офлайн

#4 Апрель 8, 2022 07:43:57

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Чтение файла внутри итератора

vladimir_vl_vlad
можно обращаться к итератору внутри самого класса?
Да возможно-то много чего, только не всё надо делать. Возможно подняться на девятиэтажку и потом спрыгнуть с неё. Возможно натянуть резиновый сапог на голову, а потом пытаться снять его плоскогубцами. Да много чего возможно, но стал бы ты это делать? Вот то же самое и в питоне. Тут главный вопрос: зачем?



Отредактировано py.user.next (Апрель 8, 2022 07:44:34)

Офлайн

#5 Апрель 8, 2022 10:20:49

vladimir_vl_vlad
Зарегистрирован: 2021-07-16
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Чтение файла внутри итератора

py.user.next
Ну, допустим в классе будет еще один метод который производит вычисления над значениям, получаемыми из итератора

Офлайн

#6 Апрель 8, 2022 19:25:21

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Чтение файла внутри итератора

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

Я тебе на примере объясню просто:
1. Вот ты спрашиваешь “я пойду в магазин, там идёт дождь, можно я с собой зонтик возьму?”.
2. Я тебе говорю “можно”.
3. Ты говоришь “а можно я зонтик этот имплантирую себе куда-нибудь, чтобы в руке не нести его?”.
4. Я тебе говорю “нет, нельзя, потому что однажды наступит лето и ты как дурак будешь ходить с торчащим зонтиком прямо из оттудова”.

Так что носи зонтик в руке. Потом ты найдёшь себе плащ или вообще машину.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version