def read_text(bz2_loc, n=10000):
with BZ2File(bz2_loc) as file_:
for i, line in enumerate(file_):
data = json.loads(line)
yield data["body"]
if i >= n:
break
我认为它读取每一行并立即返回结果,当它达到10000行时,它就会跳出循环。这段代码并不能完成整个文件的读取。这是真的吗?
如果我想读取整个文件,并且每10000次生成一次,如何修改它?
你可以试试这样的东西:
def read_text(bz2_loc, n=10000):
with BZ2File(bz2_loc) as file_:
lines = []
for i, line in enumerate(file_):
data = json.loads(line)
lines.append(data["body"])
if i % n == 0:
yield lines
lines = []
请注意,如果i
从0
开始,这也将产生第一行