文章目录
编码的历史来源
(为什么要有encode decode)
0、先有了ASCII
1、然后中国科学家自力更生,为汉语匹配了GB2312,后续又出现了GBK。
2、为了全球沟通便利,出现了Unicode万国码
3、Unicode所占内存太大,还是希望所占内存能小就小。所以:出现了UTF-8(8-bit Unicode Transformation Format)。它是一种针对Unicode的可变长度字符编码,它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度,而当字符在ASCII码的范围时,就用一个字节表示,所以UTF-8还可以兼容ASCII编码。
4、Unicode是内存编码的规范,而UTF-8是如何保存和传输Unicode的手段。
5、有些网站还是GBK 或者GB2313,为了“接轨”,所以要encode decode。
encode decode
把自然语言转为计算机语言通过encode来实现
把计算机语言转为人类语言就是decode。
print('会去南极的座头鲸'.encode('UTF-8'))
print(b'\xe4\xbc\x9a\xe5\x8e\xbb\xe5\x8d\x97\xe6\x9e\x81\xe7\x9a\x84\xe5\xba\xa7\xe5\xa4\xb4\xe9\xb2\xb8'.decode('UTF-8'))
代码里的一长串b’这些是会去南极的座头鲸这句话的‘电脑语言’
以b开头表示是字节bytes
\x 的意思是分隔符
读文档
?为什么要用python打开文档
(就是能用python这个能力,像一个人一样替你打开多个文件,省手指)
filel=open('E:\\python\\reading\\test.txt','r',encoding='utf-8')
#这里有一个乌龙···一开始encoding打成了enconding···报错是TypeError: 'enconding' is an invalid keyword argument for open() 我就改成了encode 当然还是不对,切记是encoding、encoding、encoding
#还有一个错误,真的是灵机一动想起来错到了哪里。路径复制过来以后是\,代码里为了和它本身的“语汇”加以区别,要变成\\不然会报错
OSError: [Errno 22] Invalid argument: 'E:python\reading\test.txt'
filecontent = filel.read()
print(filecontent)
基础语法:
file1 = open(‘绝对路径要双斜杠’,‘r’,encoding=‘utf-8’)
filecontent=file1.read()
print(filecontent)
在python中写文件
file2=open('路径','w',encoding='utf-8')
file2.write('')
#'a'代表附加,不会把之前的给覆盖掉
file2=open('E:\\python\\reading\\test.txt','a',encoding='utf-8')
file2.write('座头鲸\n')
file2.write('会去南极\n')
r w a 和 rb wb ab
r : 读文件,文件不存在则报错
b : 写文件,文件不存在则新建;存在则覆盖原内容
a : 附加,文件不存在则新建
·····b : 表示以二进制的方式来操作(图片和音频是二进制形式的保存)
with的作用
因为计算机打开的文件数是有限制的,打开太多以后就不可以继续打开了。所以要及时关闭。
file1.close()
而有时会忘记及时关闭,或者不确定现在要不要关,用with。
with open as
#具体的例子:
#普通做法
file2=open('E:\\python\\reading\\test.txt','a',encoding='utf-8')
file2.write('座头鲸\n')
file2.close()
#with做法
with open('E:\\python\\reading\\test.txt','a') as file2:
#不要忘记冒号:::::
file2.write('座头鲸\n')
#要缩进,而且不用.close()来关闭