1) 文件读取方式
read()将文本文件所有行读到一个字符串中。
readline()是一行一行的读
readlines()是将文本文件中所有行读到一个list中,文本文件每一行是list的一个元素。优点:readline()可以在读行过程中跳过特定行。
2)大文件读取方式1:分块读取
将大文件分割成若干小文件处理,处理完每个小文件后释放该部分内存。这里用了iter 和 yield
def read_in_chunks(filePath, chunk_size=1024*1024):
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):
process(chunk) # <do something with chunk>
3)大文件读取方式2:for line in f
l with语句打开和关闭文件,包括抛出一个内部块异常。
l for line in f文件对象f视为一个迭代器,会自动的采用缓冲IO和内存管理,所以你不必担心大文件。
with open(...) as f:
for line in f:
process(line) # <do something with line>
4)二进制文件读写
对于文本数据,可以直接以“r”形式读写,但对于图片,音乐等等,这些东西都是有规则的二进制文件,读取方式是“rb”。