Python 读取文件的几个函数以及大文件读写¶
read() 函数一次性读取整个文件,如果是大文件通常反复调用 read(size) 比较保险,每次读取 size 个字节。
另外 readline 每次读取一行内容,而 readlines 一次性读取所有行并返回一个 list
读取大文件的一个封装¶
def read_in_chunks(filePath, chunk_size):
file_object = open(filePath)
while True:
chunk_data = file_object.read(chunk_size)
if not chunk_data:
break
yield chunk_data
if __name__ == "__main__":
filePath = './path/filename'
for chunk in read_in_chunks(filePath):
pass
另外 也可以通过 iter 和 partial 更简单的实现这一功能
from functools import partial
def readanddraw():
with open(filePath) as f:
chunks = iter(partial(f.read, chunksize), '')
for chunk in chunks:
pass
iter() 函数有一个鲜为人知的特性就是,如果你给它传递一个可调用对象和一个 标记值,它会创建一个迭代器。这个迭代器会一直调用传入的可调用对象直到它返回标 记值为止,这时候迭代终止。
综上,对于大文件,要么 readline 要么 按固定大小读取文件。