MST

星途 面试题库

面试题:Python等效函数调用之文件读取函数对比

在Python中,有`open()`函数用于打开文件进行读取操作。假设我们有一个需求,从一个文本文件中逐行读取内容并处理。请举例说明`open()`函数配合`readlines()`方法和使用`with open`语句以及`for`循环逐行读取这两种方式的等效函数调用,并分析它们在内存使用和代码简洁性方面的差异。
49.1万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

1. 使用open()函数配合readlines()方法

def read_file_with_readlines():
    file = open('example.txt', 'r')
    lines = file.readlines()
    file.close()
    for line in lines:
        # 处理每行内容
        print(line.strip())

2. 使用with open语句以及for循环逐行读取

def read_file_with_with():
    with open('example.txt', 'r') as file:
        for line in file:
            # 处理每行内容
            print(line.strip())

3. 内存使用差异

  • open() + readlines(): readlines()方法会一次性将文件的所有行读取到内存中,存储为一个字符串列表。如果文件非常大,这可能会导致内存占用过高,甚至引发内存不足的错误。
  • with open + for循环: 这种方式逐行读取文件内容,每次只在内存中保留当前处理的那一行,大大减少了内存的占用,适合处理大文件。

4. 代码简洁性差异

  • open() + readlines(): 需要手动打开和关闭文件,如果忘记关闭文件,可能会导致资源泄漏等问题。代码相对繁琐。
  • with open + for循环: with语句会在代码块结束时自动关闭文件,无需手动操作,代码更加简洁明了,也更符合Python的编程习惯。