此代码是否读取文件中的前10000行


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 = []

请注意,如果i0开始,这也将产生第一行

最新更新