今日内容简要
- 字符编码
- 文件的操作
字符编码
- 何为字符编码
人类在与计算机交互时,用的都是人类能读懂的字符,如中文字符、英文字符、日文字符等,所以之间需要翻译的过程,翻译的过程必须参照一个特定的标准,该标准称之为字符编码表,该表上存放的就是字符与数字一一对应的关系。
字符编码中的编码指的是翻译或者转换的意思,即将人能理解的字符翻译成计算机能识别的数字
字符编码表的发展史
阶段一
现代计算机起源于美国,所以最先考虑仅仅是让计算机识别英文字符,于是诞生了ASCII表
ASCII表的特点:
1.只有英文字符与数字的一一对应关系
2.一个英文字符对应1Bytes,1Bytes=8bit,8bit最多包含256个字符,可以对应256个字符,足够所有的英文字符
阶段二
每个国家都各自的字符,为让计算机能够识别自己国家的字符外加英文字符,各个国家都制定了自己的字符编码表
为了让计算机能够识别中文和英文,中国人定制了GBK
GBK:即国标,英文名称:Chinese Internal Code Specificationju
GBK表的特点:
1.只有中文字符、英文字符与数字的一一对应关系
2.一个英文字符对应1Bytes
一个中文字符对应2Bytes
补充说明:
1Bytes=8bit,8bit最多包含256个数字,可以对应256个字符,足够表示所有英文字符
2Bytes=16bit,16bit最多包含65536个数字,可以对应65536分字符,足够表示所有中文字符
阶段三
针对各个国家的编码转义问题,unicode于1990年开始研发,1994年正式发布,具备亮点特点
unicode表的特点
1.存在所有语言中的所有字符与数字的一一对应关系,即兼容万国字符
2.与传统的字符编码的二进制有对应关系。
文本编辑器输入任何字符都是最新存在于内存中,是unicode编码的,存放于硬盘中,则可以转换成任意其他编码,只要该编码可以支持相应的字符
- 编码与解码
编码:由字符转成内存中的Unicode,以及由Unicode转成其他编码的过程,都称为编码encode
解码:由内存中的unicode转换成字符,以及由其他编码转换成unicode的过程,都称为解码decode
utf8的由来:
理论上是可以将内存中unicode格式的二进制直接存放于硬盘中的,但由于unicode固定使用两个字节来存储一个字符,如果多国字符中包含大量的英文字符时,使用unicode格式存放会额外占用一倍空间(英文字符其实只需要用一个字节存放即可),然而空间占用并不是最致命的问题,最致命地是当我们由内存写入硬盘时会额外耗费一倍的时间,所以将内存中的unicode二进制写入硬盘或者基于网络传输时必须将其转换成一种精简的格式,这种格式即utf-8(全称Unicode Transformation Format,即unicode的转换格式)
文件的操作
- 操作系统
windows mac linux
- 双击文件
磁盘转 磁头读取数据
- 保存文件
硬盘转 磁头写入数据
我们在操作文件的时候其实是操作的是硬盘
'''文件其实是操作系统暴露给我们简单快捷的操作硬盘的接口'''
绝对路径与相对路径
绝对路径
非常详细的路径描述
无论什么人什么位置都可以找到
相对路径
有一个参考
只有相对的事物才可以找到
res = open(r'a.txt','r',encoding='utf8')
print(res.read())
res.close()
# 关键字
# open close read
打开a.txt 使用变量名f指代文件
with open(r'a.txt','r',encoding='utf8') as f:
print(f.read()) #读取文件内容
# with 子代码运行结束之后会自动调用close关闭文件资源
"""
with open (文件路径,读写模式,编码格式) as 变量名:
子代码模块
文件路径是必须的
读写模式和编码格式是可选的
如果不指定读写模式,那么默认使用r
如果不指定编码格式,那么默认使用当前计算机内部默认编码
"""
'''在中国所有的windows电脑内部默认的编码是gkb'''
with open(r'a.txt')as f:
print(f.read())
# 取消转义
res = r'F:\python\Demo03.txt'