MST
星途 面试题库

面试题:Python在逐行处理大文件时优化内存使用

有一个非常大的文本文件,无法一次性全部读入内存。请用Python编写代码逐行处理该文件,对每行内容进行复杂的加密操作(可自行定义加密逻辑),同时要确保内存使用的高效性,尽量减少内存占用。阐述你这样实现的理由。
36.5万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
def custom_encryption(text):
    # 自定义加密逻辑,这里简单示例为字符的ASCII码加1
    encrypted_text = ''.join(chr(ord(char) + 1) for char in text)
    return encrypted_text

def process_large_file(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        for line in file:
            encrypted_line = custom_encryption(line.strip())
            # 这里可以对加密后的行进行输出或其他处理,例如写入新文件
            print(encrypted_line)

# 使用示例
file_path = 'your_large_file.txt'
process_large_file(file_path)

实现理由

  1. 逐行读取:使用 with open(file_path, 'r', encoding='utf-8') as file 结合 for line in file 的方式逐行读取文件。这样每次只在内存中保留一行数据,避免一次性将整个大文件读入内存,极大地减少了内存占用。
  2. 自定义加密逻辑:在 custom_encryption 函数中定义加密逻辑。这里简单地将每个字符的ASCII码加1,实际应用中可根据需求替换为更复杂的加密算法,如AES等。
  3. 及时处理:对每一行加密后,可以立即对加密后的内容进行后续处理,如输出到控制台、写入新文件等。这样可以避免在内存中累积过多加密后的行数据,进一步保证内存使用的高效性。