gpt4 book ai didi

python - 如何使用 "chain"迭代器?

转载 作者:太空宇宙 更新时间:2023-11-03 14:03:52 25 4
gpt4 key购买 nike

<分区>

我正在尝试将迭代器链接在一起,其中一个迭代器从主文件读取,另一个迭代器获取主文件的每一行并根据第一个文件的输出处理另一个文件。

我的工作代码如下

class MasterReader(object):

def __init__(self, filename):
self.f = open(filename, "r")

def __iter__(self):
return self

def __next__(self):
line = self.f.readline().strip()
if line == "":
raise StopIteration
return line


class SubReader(object):

def __init__(self, mr):
self.mr = mr

def __iter__(self):
self._next()
return self

def _next(self):
self.current = open(self.mr.__next__(), "r")

def __next__(self):
while True:
line = self.current.readline().strip()
if line == "":
self._next()
continue
return line


mr = MasterReader("master")
sr = SubReader(mr)

for line in sr:
print(line)

其中 master 是一个包含多行其他文件的文件

file1
file2

file1 包含

1.a
1.b
1.c

file2 包含

2.a
2.b
2.c

输出是

1.a
1.b
1.c
2.a
2.b
2.c

再次,我所做的工作,但感觉不对,因为我在 __next__ 中有一个 while 循环,我必须手动检查每个子文件的末尾,并且显式调用 master 文件中的下一行。

是否有更好/更 pythonic 的方式来做到这一点?

编辑:这是我要完成的一个简化问题。在实际版本中,SubReader 将被线程化,我只需要一个 MasterReader。实际上,这对我的线程项目不起作用,但我想确保在深入研究困惑之前泛化迭代器。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com