在使用python处理文本的时候,经常会需要读取文件的内容。如果文件比较小,那么直接使用open文件对象打开文件,再通过read()方法最为方便,这种方法就是把文件内容读出来后放到内存变量。
read
f = open('/var/log/nginx/zhangnq.com.log','rb')
#读取全部
log_data = f.read()
f.close()
# 按行读取
但是,当文件很大比如10GB,这种方法就会撑爆内存,爆出类似memoryError的错误。所以,要保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。
如果是处理连续文本内容,文件对象还支持readline()和readlines()两个方法。不同的是readline()没执行一次读取一行,readlines()会把所有内容都读出来。所以readlines方法不适用大文件。
readline
import time
f = open('/var/log/nginx/zhangnq.com.log','rb')
while True:
print(f.readline())
time.sleep(1)
内存使用:占用不到4兆。
readl