字节模式指以二进制方式读写文件,使用 rb/wb 等模式可避免编码转换,适用于处理图像、音频等非文本文件,操作时需注意数据类型为 bytes,大文件应分块读取。

在Python中处理文件时,使用字节(bytes)模式可以更精确地操作二进制数据。这种模式适用于图像、音频、视频、压缩包等非文本文件,也用于需要避免编码问题的场景。
什么是字节模式?
默认情况下,Python以文本模式打开文件,会自动进行字符编码(如UTF-8)。而以字节模式打开文件时,读取和写入的是原始字节数据,不会做任何编码转换。
通过在文件打开模式中添加 b 标志(如 rb、wb),即可进入字节模式。
如何用字节模式读写文件
以下是一些常见操作示例:
立即学习“Python免费学习笔记(深入)”;
读取二进制文件:
with open('example.jpg', 'rb') as f:data = f.read()
print(data[:10]) # 打印前10个字节
写入二进制文件:
在原版的基础上做了一下修正评论没有提交正文的问题特价商品的调用连接问题去掉了一个后门补了SQL注入补了一个过滤漏洞浮动价不能删除的问题不能够搜索问题收藏时放入购物车时出错点放入购物车弹出2个窗口修正主题添加问题商家注册页导航连接问题销售排行不能显示更多问题热点商品不能显示更多问题增加了服务器探测 增加了空间使用查看 增加了在线文件编辑增加了后台管理里两处全选功能更新说明:后台的部分功能已经改过前台
f.write(b'\x48\x65\x6c\x6c\x6f') # 写入"Hello"的ASCII字节
复制文件(保持原始数据):
with open('source.png', 'rb') as src:content = src.read()
with open('copy.png', 'wb') as dst:
dst.write(content)
字节与字符串的转换
在处理字节数据时,经常需要在 str 和 bytes 之间转换:
- str → bytes:使用 .encode() 方法,例如:'hello'.encode('utf-8')
- bytes → str:使用 .decode() 方法,例如:b'hello'.decode('utf-8')
注意:对非文本数据(如图片)不能随意解码,否则会出错或损坏数据。
适用场景与注意事项
使用字节模式适合以下情况:
- 处理非文本文件(图片、音频、可执行文件等)
- 网络传输或协议解析中需要精确控制数据格式
- 避免因编码不一致导致的乱码问题
注意事项:
- 不要用文本模式打开二进制文件,可能导致数据被修改(如Windows中换行符转换)
- 读取大文件时建议分块处理,避免内存溢出:
chunk_size = 1024
while chunk := f.read(chunk_size):
process(chunk) # 处理每一块数据
基本上就这些。只要记住:涉及非文本内容,就用 rb 或 wb 模式,操作的是 bytes 类型数据,就不会出错。










