Python的读写文档、编码的部分历史

文章目录

编码的历史来源

(为什么要有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'))

Python的读写文档、编码的部分历史
代码里的一长串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()来关闭

上一篇:计算机网络安全实验002


下一篇:每天一个Linux命令:whereis