[英]Is there a Python standard library function to create a generator from repeatedly calling a functional?
我有一個方法想要重復調用以迭代,它會在完成后引發一個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 reader.read_next_batch()
except StopIteration:
return
return gen()
for batch in make_generator(reader.read_next_batch):
writer.write_table(batch)
...但我想知道這樣的事情是否可以使用標准庫函數或一些晦澀的語法?
我會假設帶有第二個參數的普通iter()
函數應該做你想要的。 如:
for batch in iter(reader.read_next_batch, None):
...
關於如何迭代 CSVStreamingReader 的基本問題的答案是: CSVStreamingReader
是可迭代的並且只做你想要的事情:
reader = pyarrow.csv.open_csv(...)
for batch in reader:
...
一般來說,python 庫返回不是 python-iterable 的“iterable”東西真的很少見。 這始終是明智的第一件事。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.