VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • 深入 Python 文件操作:编码、读写与追加的全解析

一、文件编码:计算机的 "语言翻译官"
在计算机世界中,所有数据最终都以0和1的二进制形式存储。但人类需要更直观的表示方式,文件编码就是连接二者的桥梁。

常见编码格式
ASCII:最早的单字节编码,仅支持英文和符号(128 个字符)
UTF-8:Unicode 的可变长编码,兼容 ASCII,支持全球语言(Python3 默认编码)
GBK:中文常用编码,双字节存储中文字符
Python 中的编码处理
当使用open()函数时,通过encoding参数指定编码:

# 读取UTF-8编码的文本
with open("data.txt", "r", encoding="utf-8") as f:
    content = f.read()

# 写入GBK编码的文件
with open("output.txt", "w", encoding="gbk") as f:
    f.write("你好,世界!")

二、文件读取:从磁盘到内存的桥梁
基础操作模式

模式 说明 示例
r 只读(默认) open("file.txt", "r")
rb 二进制只读 open("image.png", "rb")
r+ 读写(指针从头开始) open("data.txt", "r+")
读取方法对比    
  1. 一次性读取全部内容
with open("log.txt", "r") as f:
    all_text = f.read()  # 适合小文件
  1. 逐行读取(推荐大文件)
with open("large_file.txt", "r") as f:
    for line in f:  # 内存友好型方式
        print(line.strip())
  1. 按字节读取二进制文件
with open("video.mp4", "rb") as f:
    chunk = f.read(1024)  # 每次读取1KB
    while chunk:
        process(chunk)
        chunk = f.read(1024)

三、文件写入:从内存到磁盘的持久化
写入模式详解

模式 说明 注意事项
w 覆盖写入(文件不存在则创建) 会清空原有内容
wb 二进制写入 用于图片、音频等非文本文件
w+ 读写模式(覆盖写入) 慎用,避免数据丢失
文本写入示例    
# 写入多行文本
lines = ["第一行\n", "第二行\n", "第三行\n"]
with open("output.txt", "w") as f:
    f.writelines(lines)  # 比多次f.write更高效

二进制写入示例

# 保存图片数据
with open("download.jpg", "wb") as f:
    f.write(requests.get("https://example.com/image.jpg").content)

四、追加写入:数据的增量存储
追加模式a
使用a模式时,文件指针会指向末尾,新内容将添加到文件尾部:

# 追加日志信息
with open("app.log", "a") as f:
    f.write(f"[{datetime.now()}] 用户登录\n")

二进制追加模式ab

# 合并视频片段
with open("movie.mp4", "ab") as f:
    f.write(new_video_chunk)

五、最佳实践与注意事项
始终使用with语句:自动管理文件关闭,避免资源泄漏

明确指定编码:防止出现UnicodeDecodeError或乱码

模式组合技巧:

r+:读写模式(需手动控制指针位置)
a+:追加并读取(常用于日志分析)
异常处理

try:
    with open("test.txt", "r") as f:
        content = f.read()
except FileNotFoundError:
    print("文件不存在")
except UnicodeDecodeError:
    print("编码错误,请检查文件格式")

本文作者: 一点浩然气~
本文链接: https://www.cnblogs.com/FrostBoy/p/18799168


相关教程