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

    字符编码

    人识别的语言与机器识别的语言转化的媒介 *****

    重点

    1. 什么是字符编码 
     人类能识别的是字符等高级标识符,电脑只能识别0,1组成的标识符,要完成人与机器之间的信息交流所需要的媒介
     两种标识符转化的对应关系形成的结构,称之为编码表

    2. 常用的编码表:ascii、unicode、GBK、Shift_JIS、Euc-kr   
      了解:编码表的发展史
    1. ascii(ASCII):字母、数字、英文符号与计算机01标识符的对应关系 
      思考:如何将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, 采用万国编码来解释文本内容
    3. 编码操作:编码encode()、解码decode() 

    知识储备

    电脑三大核心:cpu - 内存 - 硬盘(数据的存取过程)
    软件及python解释器读取文件过程:启动 - 读取 - 展示|解释执行
    python2环境的文件头:# coding: 编码格式

    简介与发展

    1. ascii - 各国编码 - 万国编码 
    2. 存取不一致的乱码现象
    3. unicode与utf-8

      思考:unicode与utf-8什么关系
    编码类型 存储汉字 存储英文字母 占有空间 读取效率
    unicode 2字节 2字节 较多(编码多为英文) 极高
    utf-8 3-6字节 1字节 较少
      总结:内存都是按unicode存储数据,硬盘和cpu采用utf-8来存取数据 
      unicode与utf-8采用的是一张unicode编码表,utf-8是unicode编码表体现方式,变长存储数据
      变长优点:(大量数据都是以英文存在,所以utf-8空间更小)传输速度更快

    核心

    编码操作:编码encode()、解码decode()
    s = '123呵呵'
    n_b = bytes(s, encoding='utf-8')
    print(n_b)
    
    b = b'123xe5x91xb5xe5x91xb5'
    n_s = str(b, encoding='GBK')
    print(n_s)
    重点:*****
    将u字符串编码成b字符串
      print(u'你好'.encode('utf-8'))
    将b字符串解码成u字符串
      print(b'xe4xbdxa0xe5xa5xbd'.decode('utf-8')) 

    字符与字节

    字符占多少字节,字符串转化 ***

    重点

    1. 字节的存储方式:8个二进制位 
    2. 字符所占字节数:根据编码的不同,所占字节数可能不同
    3. 三种格式字符串:u''、b''、r''
    • unicode字符串,默认字符串

        s1 = u'abc你好 不好'

        print(s1)

    • 字节字符串

        s2 = b'abc123xb7xb7'

        print(s2)

    • 原义字符串: 不对字符串内存做任何操作(eg: 的转化)

        s3 = r'abc你好 不好'

        print(s3)

    了解

    u、b格式字符串转换: 
      str(b'', encode='utf-8') ???str(b'', encoding='utf-8')
      bytes(u'', encode='utf-8') 

    文件操作

    文件:硬盘中的一块存储空间(虚拟的文件)  *****
    文件操作:根据文件名来操作硬盘的那块存储空间,操作方式 读read 写write 

    重点

    1. 文件操作的三步骤:打开文件 - 使用文件 - 关闭文件
    # 1、打开文件
    # 变量名 = 文件空间
    # 文件路径 操作模式(读|写) 编码
    f = open('a.txt', 'r', encoding='utf-8')
    
    # 2、操作文件
    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)
    
    
    # 3、关闭文件
    f.close()  # 释放操作系统对文件的持有,变量f还被应用程序持有
    
    # del f  # 系统自动回收
    print(f)

     2. 文件操作三要素:文件源、操作模式、编码
     3. with语法:with open(...) as 别名, ..., open(...) as 别名: pass
     4. 重点方法:read() | write() | readline() | close() | f.flush() | f.seek()

    操作模式

    主模式:r:读 | w:写 | a:追加 
    从模式:b:按字节操作 | t:按字符操作 | +:可读可写
    了解:x:异常写 | U:被遗弃了
    基础写 
    文件不存在:会新建文件,再操作文件
    文件存在:先清空文件,再操作文件
    w = open('b.txt', 'w', encoding='utf-8')
    
    w.write('456')
    
    w.close()
    
    print('end')
    
    

    操作方法

    读:read() | readline() | readlines() 
    写:write() | writelines() | flush()
    光标:seek() | tell()
    特征:encoding | closed

    了解:readable() | writable() | name

    案例

    1. 文件复制 
    2. 文件修改

    了解:py文件脚本机制
  • 相关阅读:
    Systemd 指令
    2018年书单
    2017年书单
    Centos7 Devstack [Rocky] 重启后无法联网
    kvm虚拟机操作相关命令及虚拟机和镜像密码修改
    负载均衡原理-转
    用配置文件里面的参数值替换yaml模板中的变量值【python】
    linux工具之sar
    利用系统缓存优化程序的运行效率
    Elasticsearch单机部署
  • 原文地址:https://www.cnblogs.com/zhouyongv5/p/10599581.html
Copyright © 2011-2022 走看看