字符编码和文件处理

  字符编码和文件处理:

  一、字符编码:

     (1)  字符编码表:人类的字符转换成数字

      1Bytes=8bit

      1字节等于8个二进制

      ASCII码:只能识别英文字符,1英文字符=8bit

      GBK:能识别汉字与英文,1汉字=两个字节,1个英文字符=一个字节

      unicode:能识别万国字符,1字符=2Bytes=16bit

        两大特点:

          1、能够兼容万国字符

          2、与各个国家的字符编码都有映射关系

      utf-8:是unicode的转换格式,1个英文字符=1Bytes 1个汉字=3Bytes

      重点理论:

          1、编码与解码:

            字符---编码--->unicode的二进制------编码------->GBK的二进制

            GBK的二进制------解码---->unicode的二进制----->解码->字符

          2、解决乱码问题的核心法则:

            字符用什么编码格式编码的,就应该用什么编码格式进行解码

          3、python解释器默认的字符编码

            python2:ASCII

            python3:UTF-8

 

            通过文件头可以修改python解释器默认使用的字符编码

            在文件首行写:#coding:文件当初存的时候用的字符编码

            针对python2解释器中定义字符串应该:

              x=u"上"

            对于python3解释器便是x="上"不加u前缀也是存成unicode

            在python3中

              x='上' # '上'存成了unicode

              unicode---------encode----->gbk

              res = x.encode('gbk') #res是gbk格式的二进制,称之为bytes类型

              gbk(bytes类型)-------------decode------>unicode

              y = res.decode('gbk') #y就是unicode

          关于字符编码的操作:

            1、编写python文件,首行应该加文件头,#coding:文件存时用的编码

            2、用python2写程序,定义字符串应该加前缀u,如x=u'上'

            3、python3中的字符串都是unicode编码的,python3的字符串encode之后可以得到bytes类型

     (2)为何字符要编码

          人类与计算机打交道用的都是人类的字符,而计算机无法识别人类的字符,只能识别二进制,所以必须将人类的字符编码成计算机识别的二进制数字。  

  二、文件处理

      1、什么是文件:文件是操作系统提供给用户/应用程序的一种虚拟单位,该虚拟单位直接映射的是硬盘空间

      2、为何要处理文件

        用户/应用程序直接操作文件(读/写)就被操作系统转换成具体的硬盘操作,从而实现用户/应用程序将内存中的数据永久保存到硬盘中

      3、如何用文件

        1、文件处理的三个步骤:

        (1)f.open(r'c.txt',mode='r',encoding='utf-8')  #文件对象(应用程序的内存资源)---》操作系统打开的文件(操作系统的内存资源)

        (2)data = f.read()

        (3)f.close() #向操作系统发送信号,让操作系统关闭打开的文件,从而回收操作系统的资源

        2、上下文管理(常用的文件处理格式)

        with open(r'c.txt'',mode='r',encoding='utf-8') as f,open(r'b.txt',mode='r',encoding='utf-8') as f:

          #读写文件的操作:

          #pass

        文件的打开模式:r(默认的) w  a

        操作文件内容的模式:

        t(默认的):操作文件内容都是以字符串为单位,会自动帮我们解码,必须制定encoding参数

        b:操作文件内容都是以Bytes(二进制)为单位,硬盘中存的是什么就取出什么,一定不能指定encoding参数

        循环读文件内容的方法:

        with open(r'c.txt',mode='r',encoding='utf-8') as f:

          for line in f:

            print(line,end='')

        总结:t模式只能用于文件本文件,而b模式可以用于任意文件

        

      

posted @ 2018-09-19 19:46  小菜鸟张阳阳  阅读(138)  评论(0编辑  收藏  举报