day 08
内容概要
- 字符编码
- 文件处理
内容详细
-
字符编码
计算机内部存储数据都是以二进制数字的形式存储 计算机基于点工作 而电信号只有高低电平两种状态 也就以为着计算机的世界里只能识别两种状态 我们人为的将高电平定义为数字:1 地电平定义为数字:0 单位换算(重要***) 比特位bit(二进制数的个数) 8bit = 1 bytes(字节) 1024bytes = 1KB 1024KB= 1MB 1024MB = 1GB 1024GB = 1TB 1024TB = 1PB ... 字符编码的研究仅限于文本文件(******) 为什么人类在使用计算机输入字符的时候电脑显示是人类能看懂的字符 而计算机内部只识别二进制 00001111 》》》》 我 00001000 》》》》 你 计算机二进制 设定好对应关系 人类的字符 因此如何设定对应关系: 字符编码表 : 规定了人类的字符与数字之间的对应关系
-
字符编码的发展史
三个阶段: 一家独大:美国ASCII 群雄割据:中国GBK 日本shift_JIS 韩国Euc_kr 天下统一:Unicode 改进》》》utf-8 一家独大 计算机是由美国人发明的 美国人需要计算机能够识别英文 所以发明了ASCII码(字符编码表) 记录了英文与数字的对应关系 1bytes来表示所有的英文及符号 8bit 256 # 所有的英文字母及符号加起来其实也不会超过128种可能 群雄割据 中国 中国人为了计算机能够识别中文发明了GBK码 GBK码表 记录了中文、英文与数字的对应关系 2bytes来表示中文及符号 16bit 65535 1bytes来表示所有的英文及符号 # 生僻字可能会使用更多的bytes来表示 日本 日本人为了计算机能识别日文发明了shift_JIS码 shift_JIS码表 记录了日文、英文与数字的对应关系 1bytes来表示所有的英文及符号 韩国 韩国人为了计算机能识别韩文发明了Euc_kr码 Euc_kr码表 记录了韩文、英文与数字的对应关系 1bytes来表示所有的英文及符号 天下一统 群雄割据导致数据交互不通畅(乱码) unicode万国码 兼容万国字符 所有的字符同意使用2bytes表示 不够增加更多bytes utf8 unicode transformation format 英文还是用1bytes 中文改用3bytes # 内存使用的编码表是unicode 硬盘使用的是utf8 '''已经你们只需要记住文本文件编码统一使用utf8即可'''
-
字符编码实操
1.解决文件乱码的核心 文件以什么编码存的就以什么编码取 2.编码与解码(编码) 编码 将人类的字符按照指定的编码转换成计算机能够识别的数据 encode() 解码 将计算机能够识别的数据按照指定的编码转换成人类能够读懂的字符 decode() 3.python解释器默认编码 python2默认的是ASCII码 在python2中定义字符串在前面加一个字母u 文件头指定编码 # -*- conding:utf8 -*- name = u'jason' python3默认的是utf-8
-
文件操作
操作系统 Windows mac Linux 双击文件 硬盘转 磁头读取数据 保存文件 硬盘转 磁头写入数据 我们在操作文件的时候其实操作的是硬盘 '''文件其实是操作系统暴露给我们可以简单快捷的操作硬盘的接口''' 绝对路径与相对路径 绝对路径 非常详细的路径描述 无论什么人什么位置都能找到 相对路径 有一个参考物 只有对应的人才可以找到 res = open(r'a.txt','r',encoding='utf-8') print(res.read()) res.close() # 这步操作是必须的 不然就会变成垃圾占内存 打开a.txt 使用变量名f指代改文件 with open(r'a.txt','r',encoding='utf-8') as f: print(f.read()) # 读取文件内容 # 这里等价于上面的操作 # with子代码运行结束之后会自动调用close关闭文件资源 ''' with open(文件路径,读写模式,编码格式) as 变量名: 子代码块 文件路径是必须的 读写你是和编码格式是可选的 ''' # 如果不指定读写模式 那么默认使用r # 如果不指定编码格式 那么默认使用当前计算机内部默认编码 """在中国所有的windows电脑内部默认的编码是gbk""" with open(r'a.txt') as f: print(f.read()) # 读取文件内容 # 取消转义 # res = r'D:\day08\a.txt' # res1 = r'D:\day08\n.txt' # res2 = r'D:\day08\t.txt' # print(res,res1,res2)