导读热词对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧!
python读写文件的api都很简单,一不留神就容易踩”坑“。笔者记录一次踩坑历程,并且给了一些总结,希望到大家在使用python的过程之中,能够避免一些可能产生隐患的代码。
1.read()与readlines()
随手搜索python读写文件的教程,很经常看到read()与readlines()这对函数。所以我们会常常看到如下代码:
# @param Python读取大文件的"坑“与内存占用检测
# @author 编程之家 jb51.cc|512Pic.com
with open(file_path,'rb') as f:
sha1Obj.update(f.read())
or
with open(file_path,'rb') as f:
for line in f.readlines():
print(line)
# End www.jb51.cc
这对方法在读取小文件时确实不会产生什么异常,但是一旦读取大文件,很容易会产生MemoryError,也就是内存溢出的问题。
####Why Memory Error?
我们首先来看看这两个方法:
当默认参数size=-1时,read方法会读取直到EOF,当文件大小大于可用内存时,自然会发生内存溢出的错误。
read方法
read([size])方法从文件当前位置起读取size个字节,若无参数size,则表示