一、引言
图片、视频、exe 等非文本文件需要用二进制模式操作!
💡 二进制模式用 rb 和 wb,不需要 encoding 参数!
二、复制文件(二进制模式)
# 复制任意文件:图片、视频、exe 都可以
with open("test.txt", "rb") as src: # rb 读二进制
content = src.read()
with open("test_copy.txt", "wb") as dst: # wb 写二进制
dst.write(content)
print("文件复制完成!")
三、大文件复制(分块读)
# 大文件不要一次性读入内存,分块读
input_path = "big_file.bin"
output_path = "big_file_copy.bin"
chunk_size = 1024 * 1024 # 1MB
with open(input_path, "rb") as src, open(output_path, "wb") as dst:
while True:
chunk = src.read(chunk_size)
if not chunk: # 读不到东西了,结束
break
dst.write(chunk)
print("大文件复制完成!")
四、注意事项
# 二进制模式的特点:
# 1. 不需要 encoding 参数(没有编码)
# 2. 读写的是 bytes 类型,不是 str
# 3. 可以处理任意类型的文件
# bytes 和 str 的转换
text = "Hello"
b = text.encode("utf-8") # str → bytes
print(b) # b'Hello'
t = b.decode("utf-8") # bytes → str
print(t)
五、课后练习题
# 练习 1:找一张图片,用程序复制一份
# 练习 2:把一个大文件分块复制
# 练习 3:尝试把字符串转成 bytes 再转回来
总结
通过本章学习,你应该已经掌握了「二进制文件与图片读写」的相关知识。
二进制模式很强大!下一章学习异常处理!