MST

星途 面试题库

面试题:Python读取大文件全量内容的优化策略

假设要读取一个非常大的文本文件(如几个GB)的全量内容,直接使用常规方法可能会导致内存溢出。请阐述你会如何优化Python代码来实现高效读取该文件全量内容,同时保证内存使用在合理范围内。需要详细说明优化思路及涉及的Python相关技术。
13.0万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
  1. 优化思路
    • 避免一次性将整个大文件读入内存,采用逐行读取或按固定块大小读取的方式,这样每次在内存中仅保留一小部分数据,从而控制内存使用。
  2. Python相关技术
    • 逐行读取
      • 使用with open()语句打开文件,它会在文件使用完毕后自动关闭文件,避免资源泄漏。
      • 使用for循环逐行迭代文件对象。例如:
with open('large_file.txt', 'r') as f:
    for line in f:
        # 在这里对每一行进行处理,如分析、统计等
        print(line.strip())
  • 按块读取
    • 同样使用with open()语句打开文件。
    • 使用文件对象的read()方法,并指定每次读取的字节数(块大小)。例如:
block_size = 1024 * 1024  # 1MB块大小
with open('large_file.txt', 'r') as f:
    while True:
        block = f.read(block_size)
        if not block:
            break
        # 在这里对读取的块进行处理
        print(len(block))