zoukankan      html  css  js  c++  java
  • DAY7 字符编码和文件操作

    一.软件与python解释器打开文件的方法

      1.软件打开文件读取数据的流程:

       1. 打开软件
       2. 往计算机发生一个打开文件的指令,来打开文件
       3. 读取数据渲染给用户(存取编码不一致:乱码)


      2.python解释器打开py文件
       1. 打开软件(python解释器)
       2. 往计算机发生一个打开文件的指令,来打开文件
       3. 逐行解释打开的文件内容(存取编码不一致,无法正常解释,崩溃),将执行结果展示给用户

      3.python2与python3解释器区别

       py2默认按ASCII来解释文件内容 | py3默认按UTF-8来解释文件内容,要打开其他编码文件需要加文件头

       3.1文件头:# encoding: 编码表
        功能:告诉py解释器按照什么编码来解释文件内容

    二.字符编码

      1.什么是字符编码

        人类能识别的是字符等高级标识符,电脑只能识别0,1组成的标识符,要完成人与机器之间的信息交流,
      一定需要一个媒介,进行两种标识符的转化(两种标识符的对应关系) 

      2.编码表

        两种标识符的对应关系形成的结构称之为:编码表

      3.编码表的发展史    

        1. ascii(ASCII):字母、数字、英文符号与计算机01标识符的对应关系
         1.1 如何将128个字符用01完全标签
        二进制:11111111 => 255 => 1bytes(1字节) => 8个二进制位

        2.中国:研究汉字与计算机01标识符的对应关系:gb2312 => GBK(***) => GB18030
         日本:Shift_JIS
         棒子:Euc-kr

        3. 制造一个可以完成万国字符与计算机01标识符的对应关系的编码表
         编码表:unicode表
         py2:ascii,没有按万国编码,原因py2要诞生先有万国编码
         py3: utf-8, 采用万国编码来解释文本内容

      4.unicode与utf-8什么关系

        unicode:用2个字节来存储汉字,用2个字节来存储英文字母,占有空间较多,读取效率极高

        utf-8:用3-6个字节来存储汉字,用1个字节来存储英文字母,占有空间较少,读取效率低

        内存都是按unicode存储数据,硬盘和cpu采用utf-8来存取数据

           unicode与utf-8采用的是一张unicode编码表,utf-8是unicode编码表体现方式,变长存储数据

    三.解码与编码

      1.三种字符串   

       1.1 unicode字符串,默认字符串
         s1 = u'abc你好 不好'
         print(s1) # abc你好

                  不好
       1.2 字节字符串
         s2 = b'abc123xb7xb7'
         print(s2) # b'abc123xb7xb7'
       1.3 原义字符串: 不对字符串内存做任何操作(eg: 的转化)
         s3 = r'abc你好 不好'
         print(s3) # abc你好 不好

      2.编码与解码(*****)

        2.1 将u字符串编码成b字符串

          print(u'你好'.encode('utf-8'))

        2.2将b字符串解码成u字符串

          print(b'xe4xbdxa0xe5xa5xbd'.decode('utf-8'))

    四.文件操作

      1.文件定义

        文件:硬盘中一块存储空间(虚拟的文件)

        文件操作:根据文件名来操作硬盘的那块存储空间,操作方式 读read 写write

      2.文件操作步骤    

          1. 打开文件

          变量名 = 文件空间
          文件路径 操作模式(读|写) 编码

         2. 操作文件(读:read() 写:write())

         3. 关闭文件 *****

      3.操作模式  

       主模式:r:读 | w:写 | a:追加
       从模式:b:按字节操作 | t:按字符操作 | +:可读可写
       了解:x:异常写 | U:被遗弃了

      4.读文件基础   

        f = open('a.txt', 'r', encoding='utf-8') # 打开文件

        data = f.read(3) # 操作文件,将所有内容读取出来,如果设置读取长度,按照规定长度读取数据
        print(data)

        #一次读取一行
        line = f.readline()
        print(line)
        line = f.readline()
        print(line)

        #按行一次性全部读出
        lines = f.readlines()
        print(lines)

        #逐步一行一行读取
        l = []
        for line in f:
          print(line)
          l.append(line)
        print(l)

        s = set()
        for line in f:
          print(line)
          s.add(line)
        print(s)

        f.close() # 关闭文件,释放操作系统对文件的持有,变量f还被应用程序持有

      5.基础写   

       # 文件不存在:会新建文件,再操作文件
       # 文件存在:先清空文件,再操作文件
        w = open('b.txt', 'w', encoding='utf-8') # 打开文件
        w.write('456') # 写入‘456’到内存

        w.close() # 从内存写入文件,关闭文件

        

      

      

  • 相关阅读:
    thymeleaf 模板引擎
    thymeleaf 内联语法
    thymeleaf 局部变量、属性优先级、注释
    PYNQ上手笔记 | ① 启动Pynq
    MSP430F5529时钟系统深究
    C#上位机开发(四)—— SerialAssistant功能完善
    C#上位机开发(三)—— 构建SerialAssistant雏形
    C#上位机开发(二)—— Hello,World
    C#上位机开发(一)—— 了解上位机
    FPGA学习笔记(八)—— 状态机设计实例之独立按键消抖
  • 原文地址:https://www.cnblogs.com/majingjie/p/10600535.html
Copyright © 2011-2022 走看看