我有一个想要重复调用以进行迭代的方法,该方法在完成时会引发 StopIteration
(在本例中是 pyarrow.csv.CSVStreamingReader 的实例在一个大文件上循环)。我可以在 for 循环中使用它,如下所示:
def batch_generator():
while True:
try:
yield reader.read_next_batch()
except StopIteration:
return
for batch in batch_generator():
writer.write_table(batch)
它可以通过用户定义的函数以通用方式完成:
def make_generator(f):
def gen():
while True:
try:
yield f()
except StopIteration:
return
return gen()
for batch in make_generator(reader.read_next_batch):
writer.write_table(batch)
...但我想知道这样的事情是否可以通过标准库函数或一些晦涩的语法实现?
最佳答案
我假设 normal iter()
function其第二个参数应该做你想做的事。如:
for batch in iter(reader.read_next_batch, None):
...
关于python - 是否有Python标准库函数可以通过重复调用函数来创建生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69885091/