Error in user YAML: (<unknown>): could not find expected ':' while scanning a simple key at line 3 column 1
---
- oeasy Python 0439
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
本教程同步发布在:
个人网站: `https://oeasy.org`
蓝桥云课: `https://www.lanqiao.cn/courses/3584`
GitHub: `https://github.com/overmind1980/oeasy-python-tutorial`
Gitee: `https://gitee.com/overmind1980/oeasypython`
---- 上次了解了 close
- 写了 文件之后
- 需要 关闭文件
- 计算机中不都是使用二进制吗?
- 可以用二进制的方式读写文件吗?🤔
- 这样流头就可以自由地
相对运动了
- mode 模式设置为 rb
- r - read - 读
- b - binary
- 返回值变成了字节流
- b"222\n"
-
二进制 和 纯文本(text)相对
-
whence
- 除了相对于头0、
- 相对于当前1
- 还有一种相对于尾的模式2
-
怎么用呢?
- whence = 2 是从尾部计算
- -3 就是倒数第 3 个字符
- 返回值也是字节流
- 先查一下帮助
- 判断如果要"wb"的话就会 truncate 原始文件
- 虽说如此危险
- 我还是想试试
- 用二进制
写模式打开文件- 不能读
- 可想而知
- 原始文件还在
- 但里面内容已经清空
- 二进制写的时候不能直接写字符串
- 而需要写二进制字节流
- 写完了
- 我想读出来
- 打开模式使用默认的rt
- 读取纯文本
- 原来的都清空了
- 可以看到
- 原来的
111\n222\n333 - 从4号位置 第一个
\n - 开始重写
- 原来的
- 写了 aaa
- 读写成功
- 如果oeasy.txt中有非ascii字符
- 情况会如何呢?
- 细致观察
- 汉字
一使用的是- utf-8编码 对应的
- 二进制状态
- 可以用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)好像也差不多
- 为什么要有这么一个二进制写的方式呢?🤔
- 下次再说 👋
- 本文来自 oeasy Python 系统教程。
- 想完整、扎实学 Python,
- 搜索 oeasy 即可。














