show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次了解了 close
- 写了 文件之后
- 需要 关闭文件
- 计算机中不都是使用二进制吗?
- 可以用二进制的方式读写文件吗?🤔
- mode 模式设置为 rb
- r - read - 读
- b - binary - 二进制 和 text 文本相对
- 这样流头就可以自由地相对运动了
- 返回值变成了字节流
- b"222\n"
- whence 除了相对于头、相对于当前
- 还有一种相对于尾的模式
- 怎么用呢?
- whence = 2 是从尾部计算
- -3 就是倒数第 3 个字符
- 返回值也是字节流
- 先查一下帮助
- 判断如果要"wb"的话就会 truncate 原始文件
- 虽说如此
- 我还是想试试
- 用二进制写模式打开文件
- 可想而知
- 原始文件还在
- 但里面内容没了
- 写模式不能读
- 二进制写的时候不能直接写字符串
- 而需要写二进制字节流
- 写完了
- 我想读出来
- 打开模式肯定不能是写模式
- 一写就把原来的都清空了
- 用默认的 r
- 可以看到原来的 3 的位置
- 第一个字节的位置为 0
- 然后是 1,2,3
111\n222\n333
- 从第一个
\n
- 开始重写
- 写了 3 个 a
- 读写成功
- 如果oeasy.txt中有非ascii字符
- 情况会如何呢?
- 细致观察
- 二进制状态
- 可以用python打开这个文件吗?
f = open("ch.py","rb")
bytes_file = f.read()
print(bytes_file)
- 运行结果
- 用什么解码呢?
f = open("ch.py","rb")
bytes_file = f.read()
str_file = bytes_file.decode("utf-8")
print(str_file)
- 运行结果
- 解码成功
- 如果按照gb2312模式解码
- 会如何呢?
f = open("ch.py","rb")
bytes_file = f.read()
str_file = bytes_file.decode("gb2312")
print(str_file)
- 运行结果
- 解铃还须系铃人
- 解码方式一定要选对
- 默认的utf-8就很好用
- 这次我们用二进制写了文件
- 写的时候也可以 seek 调整流文件头
- 这二进制写(wb)和字符写(wt)好像也差不多
- 为什么要有这么一个二进制写的方式呢?🤔
- 下次再说 👋