python - 是否有Python标准库函数可以通过重复调用函数来创建生成器?

标签 python generator

我有一个想要重复调用以进行迭代的方法,该方法在完成时会引发 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/

相关文章:

python - 如何使用 Seaborn 热图设置固定颜色范围?

python - Firestore错误消息: Operator string 'in' is invalid

python - 如何确定 Python 生成器中的值是否为最后一个?

javascript - 与 bluebird 和 co 一起快速生成生成器功能

python - python 中具有列表理解的嵌套上下文管理器

javascript - 如何在 while 循环中使用 generator.next()?

python - 使用 dtype 读取二进制文件会导致 ValueError

python - 在 Mac 中构建 phantomJS 二进制文件失败

python - Python Pandas 系列中的数据比较

php - PHP中随机长十六进制字符串的生成器