MST

星途 面试题库

面试题:Python实现文件写入多行数据时处理异常及优化

在Python中,需要将大量的多行数据写入文件,同时要考虑文件可能不存在、磁盘空间不足等异常情况。请编写代码实现这一功能,并对代码性能进行优化,比如合理使用缓冲区等。请阐述代码思路并给出具体代码实现。
42.9万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

代码思路

  1. 文件操作:使用with open语句打开文件,以确保文件在使用完毕后正确关闭。with语句会自动处理文件的打开和关闭,包括在发生异常时。
  2. 异常处理:使用try - except块来捕获可能出现的异常,如文件不存在(在写入模式下open会自动创建文件,一般不会出现此异常,但为了完整性考虑)、磁盘空间不足(IOError异常可能涵盖此情况)等。
  3. 性能优化:合理使用缓冲区,open函数中的buffering参数可以设置缓冲区大小。默认情况下,文本文件的缓冲区大小是行缓冲(buffering=1),对于大量数据写入,可以设置一个较大的缓冲区大小,如buffering=8192(8KB),这样可以减少磁盘I/O次数,提高写入性能。

代码实现

def write_large_data_to_file(data, file_path):
    try:
        with open(file_path, 'w', buffering=8192) as file:
            for line in data:
                file.write(line + '\n')
        print(f"Data written to {file_path} successfully.")
    except IOError as e:
        print(f"An error occurred while writing to the file: {e}")


# 示例数据
large_data = ["line1", "line2", "line3", "line4", "line5"]  # 这里只是示例,实际可能从其他地方获取大量数据
write_large_data_to_file(large_data, 'example.txt')