Loading

字符编码介绍,文件的操作模式

字符编码简介

# 字符编码只针对文本文件
计算机最早诞生在美国,但是计算机只认识二进制,美国人用的英语,为了让计算机能够识别英语,就发明了一个英文字符与数字的对应关系,并列成了一个表,叫“字符编码表”

字符编码的发展史

1.一家独大
	上面说了,字符编码最早是美国人发明的,只能识别英文,那张字符编码表也只记录了英文字符与数字的对应关系,字符编码表又叫ASCII码。
    其中主要的是:英文使用1bytes(8bit)来表示英文
    '''
        A-Z:65-90
        a-z:97-122
    '''
# 所有的英文字符加起来不超过2的七次方(当时给预留了一位,是为了后续发现新语言做准备)
2.群雄割据
	随着时间的发展,其他国家也开始使用计算机,但是计算机只认识ASCII码只认识英文,那能行吗,所以各个国家也开始制作自己国家的字符编码
    中国发明了一个中文,英文,数字有对应关系的编码表,叫GBK
    中文采用两到三个bytes(16bit)来表示中文
这个阶段最大的缺点就是,计算机只认识自己国家的语言,一个国家的文件发给另一个文件,会造成乱码的现象,因为文件在进行字符编码比对时,拿的不是一个参照表了
3.天下一统
	天下合久必分,分久必合, 后来出来了一个:
    unicode:万国码
    能够兼容所有国家的语言(该表中记录了所有国家的字符与数字的对应关系)
    所有的字符都用2bytes起步存储,但是浪费空间和IO时间
    针对这一问题,在内存里面的unicode存储到硬盘的过程中对unicode进行了优化处理,也就是UtF8,将unicode中的英文使用一个bytes来存储,中文改用三个

字符编码的实际应用

  1. 编码与解码

    基于网络传输数据,数据都必须是二进制格式,所以肯定涉及到编码与解码

    编码

    编码:将人类能够读懂的字符编码成计算机能够直接读懂的字符
    用法  encode
    eg:encode('放字符编码类型')
    

    解码

    解码:将计算机能够直接读懂的字符解码成人类能够读懂的字符
    用法:decode
    eg:decode('放字符编码类型')
    

    乱码

    乱码就是字符编码用错了的意思,只需要将它转换为对应的编码解码即可
    # 在python解释器层面
    python2解释器默认的编码是ASCII码,因为那时候还没有万国码,所以使用python2的时候需要在文件的最上方,写上指定使用的编码,# coding:utf8
    在使用python2解释器的环境下定义字符串习惯在前面加u
    python3中默认的就是utf8
    

    img

文件操作的简介

  1. 什么是文件

    操作系统暴露给用户可以直接操作硬盘的快捷方式
    
  2. 代码操作文件的流程

    1.打开文件、创建文件
    2.编辑文件内容
    3.保存文件内容
    4.关闭文件
    
  3. 基本语法结构

    结构1:
    	f1 = open()
        f1.close() 结构2:推荐使用
        with open() as f:
            pass(用于补齐语法结构,没有其他含义)
        open 打开文件,可以是相对路径或绝对路径
    # open(文件的路径,文件的操作模式,文件的编码)
    	1. 文件的路径是必须要写的
        2. 文件的操作模式
        3. 文件的编码
    read()读取文件内容
    close()关闭文件
    打开的文件最后都要执行close,而close在结构1很容易被遗忘,所以推荐结构2
    with open(文件的路径,文件的操作模式,文件的编码) as f:
    	pass
    

文件的读写模式

r  read  只读模式:只能读不能写
w  write 只写模式:只能写不能读
a  append 只追加模式:在文件末尾添加内容
r模式  路径不存在直接报错
	  路径存在:正常打开文件并等待内容读取
		read()  # 一次性读取文件内所有的内容
w模式	路径不存在自动创建文件
	  路径存在先清空文件内容,之后再写入数据
a模式 路径不存在:自动创建文件
	 路径存在不会清空文件内容,而是直接在文件的末尾等待新内容的添加
# readable   是否有读的能力
# writeable  是否有写的能力

文件的操作模式

  1. t模式

    文本模式,是默认的模式
    r  rt
    w  wt
    a  at
    # t可加可不加
    该模式只能操作文本文件
    该模式必须要指定encoding参数
    该模式读写都是以字符串为最小单位
    
  2. b模式

    二进制模式,可以操作任意类型的文件
    rb
    wb
    ab
    # b不能省略
    该模式可以操作任意类型的文件
    该模式不需要指定encoding参数
    该模式读写都是以bytes类型为最小单位
    

    img

文件的内置方法

read()  # 一次性读取文件内容
		1.执行完之后光标在末尾,继续读取没有内容
    	2.当文件内容特别大的时候,容易造成内存溢出
readline()  # 一次只读一行内容
readlines()  # 结果是一个列表 里面的各个元素是文件的一行行内容
readable()  # 判断当前文件是否可读
支持for循环  # 一行行读取文件内容,内存中同一时刻只会有一行内容,这样既能读完内容,还不占用内存空间,不会造成内存溢出
write()  # 写入文件内容(字符串或者bytes类型)
weitelines()  # 可以将列表中多个元素写入文件
writable()  # 判断文件是否可写
flush  # 相当于主动按了ctrl+s(保存)

img

posted @ 2022-03-14 17:04  香菜根  阅读(115)  评论(0编辑  收藏  举报