面试题答案
一键面试- 使用
with
语句:- 原理:
with
语句会自动管理文件的打开和关闭,在文件使用完毕后及时释放系统资源。这不仅提高了代码的安全性,避免了忘记关闭文件导致的资源泄漏,而且一定程度上优化了性能。例如:
with open('small_file.txt', 'r') as f: content = f.read()
- 原理:
- 指定合适的缓冲区大小:
- 原理:
open
函数可以接受一个buffering
参数,默认情况下buffering
为 -1,使用系统默认的缓冲区大小。对于小文件读取,可以指定buffering
为1(行缓冲)或一个大于0的整数(表示缓冲区字节数)。行缓冲会在遇到换行符时就将数据从缓冲区写入或读出,减少了数据在缓冲区的停留时间,对于以行为单位读取小文件较为适用;指定具体字节数的缓冲区可以根据文件大小和系统情况优化数据的读写效率。例如:
with open('small_file.txt', 'r', buffering = 1) as f: for line in f: pass
- 原理:
- 一次读取全部内容:
- 原理:如果文件较小,一次性读取整个文件内容到内存中比逐行读取要快,因为减少了文件系统的I/O操作次数。例如:
with open('small_file.txt', 'r') as f: content = f.read()
与逐行读取相比,逐行读取每次都要进行I/O操作,而一次读取全部内容将文件内容一次性读入内存,后续处理直接在内存中进行,提高了效率。