在工作中遇到一个需求,需要用Python脚本读取一个13G的文件,把每行的记录写入redis。由于机器的内存只有8G,所以不能一次将磁盘上的文件全部读入内存,需要一行一行读取文件。
Python按行读取文件主要是使用file.readline方法或者利用file对象的迭代器性质,而file.readlines方法则是一次把所有内容从磁盘读入内存。当内存足够时,file.readlines方法显然会更快,因为磁盘I/O次数更少。
下面给出了三种遍历文件每行的方式:
if __name__ == '__main__':
# Method 1: 通过readlines方法一次把整个文件从磁盘读入内存,在内存中遍历各行
with open('test.txt', 'r') as file:
lines = file.readlines()
for line in lines:
print(line)
# Method 3:通过readline方法一次将文件的一行读入内存
with open('test.txt', 'r') as file:
while True:
line = file.readline()
if line:
print(line)
else:
break
# Method 2: 通过迭代器访问文件对象,每次将文件的一行从磁盘读入内存
file = open('test.txt', 'r')
for line in file:
print(line)
file.close()