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

            

          

  • 相关阅读:
    linux重新编译内核
    无废话ubuntu 13.4w文件共享配置
    VB6关于判断模态窗体的问题
    在.NET中快速创建一个5GB、10GB或更大的空文件
    利用虚拟光驱实现 将WINDOWS文件供虚拟机中的UBUNTU共享
    论这场云盘大战,以及各网盘的优劣
    struts2 全局格式化,格式化时间,金钱,数字
    SQL SERVER 2000/2005/2008数据库数据迁移到Oracle 10G细述
    女攻城师走在移动互联网道路的这两年
    用正则匹配多行文本
  • 原文地址:https://www.cnblogs.com/xiaocaiyang/p/9676638.html
Copyright © 2011-2022 走看看