zoukankan      html  css  js  c++  java
  • 字符编码和文件处理

      字符编码和文件处理:

      一、字符编码:

         (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模式可以用于任意文件

            

          

  • 相关阅读:
    3.Appium运行时出现:Original error: Android devices must be of API level 17 or higher. Please change your device to Selendroid or upgrade Android on your device
    3.Python连接数据库PyMySQL
    2.Python输入pip命令出现Unknown or unsupported command 'install'问题解决
    2.Linux下安装Jenkins
    5.JMeter测试mysql数据库
    Android 4学习(7):用户界面
    Android 4学习(6):概述
    Android 4学习(5):概述
    Android 4学习(4):概述
    Android 4学习(3):概述
  • 原文地址:https://www.cnblogs.com/xiaocaiyang/p/9676638.html
Copyright © 2011-2022 走看看