python文件流读取二进制,python如何读取大文件
Python流读取大文件的两种方法
1、使用 read 方法分块读取
使用较低级的file.read()方法,与直接遍历file对象不同,每次调用file.read(chunk_size)都会直接返回从当前位置读取的大小为chunk_size的文件内容,而不需要等待任何换行符出现。
defcount_nine_v2(fname):
计算文件中包含多少个数字 9 ,每个读数为8kb。
计数=0
block_size=1024*8
withopen(fname)asfp:
whileTrue:
chunk=fp.read(block_size)
#当文件没有更多的内容时,读取调用将返回空字符串
ifnotchunk:
破裂
count=chunk.count(9 )
返回2、利用生成器解耦代码计数
可以定义一个新的chunked_file_reader生成器函数,它负责所有与“数据生成”相关的逻辑。
count_nine_v3中的主循环只需要负责计数即可。
defchunked_file_reader(fp,block_size=1024*8):
生成器函数:分块读取文件内容。
whileTrue:
chunk=fp.read(block_size)
#当文件没有更多的内容时,读取调用将返回空字符串
ifnotchunk:
破裂
屈服块
defcount_nine_v3(fname):
计数=0
withopen(fname)asfp:
forchunkinchunked _ file _ reader(FP):
count=chunk.count(9 )
当count用iter(callable,sentinel)调用它时,会返回一个特殊的对象。迭代它会不断产生可调用对象的调用结果,直到结果设置为nil,迭代终止。
defchunked_file_reader(file,block_size=1024*8):
生成器函数:分块读取文件内容,并使用iter函数。
#首先用partial(fp.read,block_size)构造一个新的不带参数的函数。
#循环将一直返回fp.read(block_size)的调用结果,直到它为“”时终止
for chunkiniter(partial(file . read,block_size), ):
Yieldchunk以上是Python流读取大文件的两种方法。希望能帮到你~
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。