提示信息

Python 文件读写的进阶技巧

知恩报恩 已关注

在Python中进行文件读写是一项基础技能,但有一些进阶技巧可以帮助你更高效地处理文件。以下是一些进阶技巧和建议:

  1. 使用上下文管理器
    使用 with 语句可以确保文件在使用后正确关闭。

    1. with open('file.txt', 'r') as file:
    2. contents = file.read()
    3. # 文件在这里自动关闭
  2. 大文件的逐行读取
    对于大文件,逐行读取可以节省内存。

    1. with open('large_file.txt', 'r') as file:
    2. for line in file:
    3. process(line) # 对每一行进行处理
  3. 二进制模式读取和写入
    处理非文本文件时,可以使用二进制模式,如 'rb'(读)和 'wb'(写)。

    1. with open('image.png', 'rb') as file:
    2. data = file.read()
    3. with open('copy_image.png', 'wb') as file:
    4. file.write(data)
  4. 逐块读取大文件
    对于非常大的文件,可以按块读取。

    1. def read_in_chunks(file_object, chunk_size=1024):
    2. while chunk := file_object.read(chunk_size):
    3. yield chunk
    4. with open('large_file.txt', 'r') as file:
    5. for chunk in read_in_chunks(file):
    6. process(chunk)
  5. 使用JSON和CSV模块
    Python提供了内置模块 jsoncsv 来方便地处理这些格式的文件。

    1. import json
    2. # 读取JSON
    3. with open('data.json', 'r') as file:
    4. data = json.load(file)
    5. # 写入JSON
    6. with open('data.json', 'w') as file:
    7. json.dump(data, file, indent=4)
    8. import csv
    9. # 读取CSV
    10. with open('data.csv', 'r', newline='') as file:
    11. reader = csv.reader(file)
    12. for row in reader:
    13. process(row)
    14. # 写入CSV
    15. with open('data.csv', 'w', newline='') as file:
    16. writer = csv.writer(file)
    17. writer.writerow(['col1', 'col2', 'col3'])
  6. 捕获IO错误
    在读取和写入文件时,捕获IO错误可以提高程序的健壮性。

    1. try:
    2. with open('file.txt', 'r') as file:
    3. contents = file.read()
    4. except IOError as e:
    5. print(f"An error occurred: {e}")
  7. 修改文件指针位置
    使用 seek()tell() 可在文件中定位和获取位置。

    1. with open('file.txt', 'r+') as file:
    2. file.seek(5) # 移动到第5个字节
    3. file.write('New') # 覆盖当前位置的内容
    4. position = file.tell() # 获取当前位置

通过这些技巧,你可以在处理文件时变得更加高效和灵活。根据具体的需求,可以选择使用不同的技巧组合。

    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
知恩报恩 关注 已关注

最近一次登录:2024-11-20 11:36:58   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图