2024-04-25 14:25:44 发布
网友
我有一个巨大的文本文件(1GB),其中每个“行”都用##隔开。 例如:
## sentence 1 ## sentence 2 ## sentence 3
我正试着按分隔符打印文件。在
我尝试了以下代码,但是read()函数崩溃了(因为文件的大小)。在
有什么想法吗?在
这将以块(共chunksize字节)读取文件,从而避免与一次读取过多文件相关的内存问题:
chunksize
import re def open_delimited(filename, delimiter, *args, **kwargs): """ http://stackoverflow.com/a/17508761/190597 """ with open(filename, *args, **kwargs) as infile: chunksize = 10000 remainder = '' for chunk in iter(lambda: infile.read(chunksize), ''): pieces = re.split(delimiter, remainder + chunk) for piece in pieces[:-1]: yield piece remainder = pieces[-1] if remainder: yield remainder filename = 'post.txt' for chunk in open_delimited(filename, '##', 'r'): print(chunk) print('-'*80)
您可以使用islice。在
islice
from itertools import islice file = open('file.txt', 'r') while True: slice = islice(file, buffer) to_process = [] for line in slice: to_process.append(line) if not to_process: break #process to_process list file.close()
buffer是一次要读取的行数(必须定义int)。在
buffer
这将以块(共
chunksize
字节)读取文件,从而避免与一次读取过多文件相关的内存问题:您可以使用
islice
。在buffer
是一次要读取的行数(必须定义int)。在相关问题 更多 >
编程相关推荐