字符编码及文件处理
\"\"\"1、什么是字符编码?文字符号-----------编码----------->数字文字符号<----------解码------------数字字符编码表:一个字符对应一个数字2、为什么要研究字符编码?为了解决乱码问题:存取都用同一张字符编码表3、储备知识CPU 内存 硬盘三个步骤4、字符编码表的发展历程1、一家独大ASCⅡ:只能识别英文字符用8个bit对应一个英文字符2、天下大乱GBK:能识别中文和英文用16个bit(2Bytes)对应一个字符shift-JISEuc-KR3、归于统一unicode:能识别万国字符常用的16bit(2Bytes)对应一个字符总结:英文字符------->内存(ASCⅡ格式的二进制数)---->硬盘(ASCⅡ格式的二进制数)中文、英文字符------->内存(GBK格式的二进制数)---->硬盘(GBK格式的二进制数)日文、英文字符--->内存(shift-JIS格式的二进制数)-->硬盘(shift-JIS格式的二进制数)万国字符----->内存(Unicode格式的二进制数)---->硬盘(utf-8格式的二进制数)5、运行python程序的三个阶段1、先启动一个python解释器2、python解释器会将文件内容从硬盘读入内存3、python解释器会解释执行刚刚读入内存的代码,识别语法x = \"你好Hello\"\"\"\"# 字符-------->unicode格式的二进制(内存)---------------->utf-8格式的二进制(硬盘)# 编码 编码# 字符<--------unicode格式的二进制(内存)<----------------utf-8格式的二进制(硬盘)# 解码 解码# x = \"上\"# print(x) # 打印unicode相当于打印字符## utf8_res = x.encode(\"utf-8\")# # print(utf8_res, type(utf8_res)) # b\'\\xe4\\xb8\\x8a\' <class \'bytes\'># unicode_res = utf8_res.decode(\"utf-8\")# print(unicode_res)
# 1、打开步骤# f = open(\"aaa.py\", mode=\'rt\',encoding=\'utf-8\')# res = f.read()# print(res)# f.close()# # f.read# 上下文管理# with open(\"aaa.py\", mode=\'rt\',encoding=\'utf-8\') as f:# res = f.read()# print(res)# f.close()# 2 文件打开模式# Ⅰ 控制读写操作模式# r: 只读(默认)# w: 只写# a: 只追加写# Ⅱ 控制读写内容的模式# t: 读写都是文本格式,即读写都是用字符串(默认)# b: 读写都是bytes格式,bytes等同于二进制# 强调:如果是t模式,一定要记住加上encoding=\"编码格式\"# 强调:如果是b模式,一定要记住不要加上encoding=\"编码格式\"# r:在文件存在的时候,文件指针调到文件的开头,文件不存在直接报错# f = open(\"a.txt\", mode=\"rt\", encoding=\"utf-8\")# res = f.read()# print(res)# f.close()# w:在文件存在的时候会清空文件,指针调到文件开头,文件不存在会创建空新文件# f = open(\"a.txt\", mode=\"wt\", encoding=\"utf-8\")# f.write(\"你好\\n666\")# f.close()# a:在文件存在的时候不会清空文件,指针跳到文件末尾,文件不存在会创建空新文件# f = open(\"a.txt\", mode=\"at\", encoding=\"utf-8\")# f.write(\"\\n777\")# f.close()# f = open(\"a.txt\", mode=\"r+\", encoding=\"utf-8\")# f.write(\"554\")# f.close()# rb wb ab# f = open(\"a.txt\", mode=\"rb\")# res = f.read()# print(res)# print(res.decode(\"utf-8\"))# f.close()# f = open(\"a.txt\", mode=\"wb\")# f.write(\"你好\".encode(\'utf-8\'))# f.close()with open(r\'H:\\BaiduNetdiskDownload\\Linux阶段总结\\img\\day004主板.png\', mode=\'rb\') as f1,\\open(r\'C:\\Users\\曹嘉鑫\\Desktop\\1111.png\', mode=\'wb\') as f2:# res = f1.read()# f2.write(res)for line in f1:f2.write(line)f1.close()f2.close()