используя генератор, чтобы получить строки из файла, но продолжайте ждать при достижении StopIteration - PullRequest
0 голосов
/ 18 декабря 2018

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

def f():
    with open ('a', 'r') as f:
        while True:
            l = f.readline()
            if l:
                yield l
            else:
                break

Теперь этот генератор следует вызывать из функции, которая показывает файлвсегда что-то вроде:

def g():
    my_generator = f()
    while True:
        print(my_generator.next() if SOME_CONDITION else 'waiting for new input')
        # if got to StopIteration -> wait until a new line appears in file

Как я могу это сделать?могу ли я воссоздать my_generator после его смерти, когда я получу новую строку (как я узнаю, что строка была добавлена?)

1 Ответ

0 голосов
/ 18 декабря 2018

Вы можете попробовать это:

def g():
    iterable = iter(f())
    for x in iterable:
        while True:
            if not SOME_CONDITION:
                print('waiting for new input')
            else:
                break
        break
    for x in iterable:
        print(x)
...