字符编码
简介:字符编码只针对文本文件
字符编码的发展史:
在最初,因为计算机由美国人发明,所以美国人创建的字符编码,是只具备英语和二进制数的对应关系的。他们创建的字符编码叫做ASCII码,其中A-Z对应数字65-90,a-z对应数字97-122.
后来,各国普及了计算机,各自创建了各自的字符编码,类似中国的GBK,拥有汉语和英文的二进制数对应关系,各国创建了各自的编码,在自己国家中使用是没有太大的问题的,但是,计算机是面向国际的.
最后,因为各国字符编码不同,导致各国的计算机交流过于困难,入人们创建了万国码unicode,拥有世界上绝大部分国家的语言与二进制数的对于关系。
字符编码的实际应用
编码与解码
编码:将编程部分中人类所能直接理解其意思或者由人类命名编写的代码,转换为由计算机才能看懂的字符代码。
解码:将只有计算机才能理解的代码,转换为人类可以理解并使用的字符。
编码 encode
(变量名.encode('gbk'))
将字符串进行编码后,所打印出的值,如果由字母b开头,那么表示该数据为 bytes类型,即二进制类型。
解码 decod
(编码后的变量名.decode('gbk'))
将被编码后的代码串,通过相同的字符编码类型,重新解释为人类能够理解的字符语言。
编码解码的作用:传输数据只能为二进制,编码解码是文件交互和网络传输的关键操作方法。
乱码
产生乱码的原因是,使用了不同的字符编码方式去解释不同的编码数据。
举例:使用韩国的euc_kr,去编码咱们国家GBK才能解释出来的汉字,就会出现乱码(明明整个国家就会抄袭)。
解决方式很简单,用当时进行编码的字符编码类型,重新解码即可。
python版本差异
python2是由早年编写出的,当时的默认编码是ASCII码,与python3的utm8不同。
文件操作
文件:操作系统将硬盘暴露给用户进行操作的快捷方式。用户操作文件等同于操作硬盘。
代码对文件的操作
- 打开或者创建文件
- 对文件内容进行编辑
- 将文件保存在硬盘上
- 关闭文件
基本语法结构
结构1
变量名 = open()
变量名.close()
结构2
with open() as 变量名:
文件操作注意事项
- 使用路径打开文件时,直接添加上r,防止特殊符号产生意义。
- 同文件夹中可以只写相对路径,同文件夹中没有,就必须写出绝对路径
- 地址如果为input获取,获取值为字符串,将无法添加r和引号,直接获取即可
文件的读写模式
r read 只读
W write 只写
a append 只追加
r模式进行时,如果路径不存在,将会直接报错
结构:
with open(r'文件地址','r',encoding='utf8') as 变量名:
print(变量名.read())
将会一次性读取文件夹内所有内容
w模式进行时,路径不存在则会直接创建路径文件,路径存在时会清空原先路径下文件的内容,然后编写内容进去
结构:
with open(r'文件地址','w',wncoding='utf8') as 变量名:
变量名.write('内容')
a模式进行时,路径不存在也会创建路径下的文件,路径存在则会将新内容添加在尾部
结构:
with open(r'文件地址','a', encoding='utf8') as 变量名
变量名.write('内容')
文件操作模式
文本操作模式其实是t模式
r w a 完整为rt wt at
- 只能操作文本内文件
- 该模式必须使用encoding来选择字符编码类型
- 该模式读写以字符串为最小单位
二进制模式
二进制模式为b模式,可以操作任意类型的文件
rb wb ab,使用方式与文本操作模式相同,但是不能省略b,而且不需要用encoding选择字符编码类型,因为他固定编码为二进制编码。
文件内置方法
read() 一次性读取文件内容
1.执行后,光标停在末尾处,继续读取为空白
2.文件内容过大时,容易造成内存溢出
readine() 一次只可读一行内容
readlines() 结果是一个列表 里面的各个元素是文件的一行行内容
readable() 判断当前文件是否可读
支持for循环 一行行读取文件内容,内存中同一时刻只会有一行内容
write() 写入文件内容(字符串或者bytes类型)
writelines() 可以将列表中多个元素写入文件
writable() 判断文件是否可写
flush() 相当于主动按了ctrl+s(保存)