当我们使用 read()
或 readlines()
读取文件时,会直接把全部内容读取到内存中。但当文件非常大,甚至超过了电脑自身的内存大小,就无法使用这些方法处理了。
我们可以使用 把文件 f 作为迭代对象及使用 with 来进行处理。
with open('bigText.txt', 'r', encoding='utf-8') as f:
for line in f:
print(line) # do something...
其具有以下优点:
- 在退出 with 执行块后,文件对象会被自动关闭。
- 在 with 执行块内进行异常处理。
for line in f
将文件对象 f 视为一个可迭代的数据类型。在内部,它会自动进行 IO 缓存和内存管理。
感谢:
https://stackoverflow.com/questions/8009882/how-to-read-a-large-file-line-by-line