使用生成器从文件中生成行,但在到达StopIteration时请继续等待



我有一个生成器,应该从文件中返回行,我想稍后改进它,只返回特定的行:

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死后重新创建它吗?当我得到一条新线时(我怎么知道添加了一条线?(

你可以试试这个:

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)

最新更新