zoukankan      html  css  js  c++  java
  • 字符编码及文本一

    字符编码与文件处理

    一、前置知识点:

    ​ 1、程序执行的三大核心硬件(***):
    ​ cpu
    ​ 内存
    ​ 硬盘
    ​ 正常执行一个程序的要点:
    ​ 1、将硬盘中的数据读到内存
    ​ 2、由cpu读内存中的数据进行执行
    ​ 3、在执行程序的时候,生成的数据,优先存入内存

    2、python解释器执行一个py文件过程(***)
        如果没有python解释器,py文件单纯就是一个文本文件
        所以说,想执行py文件,必须先执行python解释器
    
        1、将python解释器的代码由硬盘读到内存
        2、将py文件以普通文本文件的格式由硬盘读到内存
        3、python解释器去内存中读取py文件的数据
        4、识别python语法,执行相应的操作
    
        ps:任何一个文本编辑器的执行,前两步都一样
    

    二、字符编码:

    ​ 字符:世界上一切语言、文字
    ​ 有必要考虑,图片文件、音频文件、视频文件?

    文件的输入和输出是两个过程
    
    人类输入的内容都是人类自己可以识别的字符
    
    计算机只能识别0101010二进制字符
    
    将人类的字符,存入内存和硬盘,要经历一个过程:
    
    人类的字符  >>>>>>>     (字符编码表)    >>>> 计算机二进制
    
    0 a
    1 b
    01 a
    10 b
    00 c
    11 d
    
    ASCII码表(美国)
        用八位二进制来代表一个英文字符(所有的英文字符+符号一共大概128左右)
            0000 0000
            1111 1111
            最多只能表示255位
    
    
        八位二进制 = 8 bit
        8 bit = 1 bytes
        1024bytes = 1KB
        1024KB = 1MB
        1024MB = 1GB
        1024GB = 1TB
        1024TB = 1PB
    
    GBK(中国)
        用2个bytes来代表一个字符,兼容英文字符
        0000 0000 0000 0000
        1111 1111 1111 1111
        最多可以表示65535位
    
    shit(小日子过得不错的日本人)
    
    fuck(韩国的)
    
    万国码(unicode)
    
    为了兼容所有的国家的字符,生成unicode
        所有的字符都用2bytes
        0101 0101 a
        0000 0000 0101 0101 a
        1、占用存储空间
        2、io次数增加,程序运行速度变慢(最致命)
    
    在unicode二进制数据存入硬盘的时候,做优化
    
    utf-8:
        utf-8只与unicode有对应关系
        unicode transformation format
    
        所有的英文字符用1个bytes表示
        所有的中文字符用3个bytes表示
    
    现在的计算机:
        内存都是:unicode
        硬盘都是:utf-8
    

    三、结论

    需要掌握:
        1、用户无论输入什么字符,存入内存,unicode都可以兼容
        2、硬盘中无论是什么编码的文件,读到内存,都可以兼容unicode
    
    数据的传输:
        优先以自己的本国字符编码进行传递
    
    
    必须掌握(******)#五星级
        (内存)unicode二进制字符 >>>  编码(encode)  >>> (硬盘)utf-8二进制字符
        (硬盘)utf-8二进制字符  >>>   解码(decode)  >>> (内存)unicode二进制字符
    
    (******)
    保证不乱码核心:
        用什么编码存的数据,就用什么编码取
    

    python2 :
        默认的字符编码ascii码(因为当时的unicode还没盛行)
    python3:
        默认的字符编码utf-8
    
    文件头:
        # coding:utf-8
        用英文字符,是为了让所有的计算机都可以识别
    
    
    pycharm默认的字符编码是:
        utf-8
    windows操作系统默认字符编码:
        gbk
    

    四、深浅拷贝

    参考我的另一篇博客深浅拷贝

    五、文件处理

    1、什么是文件?

    操作系统给你提供操作硬盘的一个工具

    2、为什么要用文件?

    为了满足人类和计算机永久保存数据

    3、怎么用文件?

    相对路径:必须与当前文件在同一目录

    绝对路径:固定的只能在这台电脑操作

    4、常用的字符意愿

    'r'				以只读方式打开文件(默认)
    'w'				以写入的方式打开文件,注意会已存在的文件,即将已有的文件删除
    'x'				如果文件已存在,用此方式打开会发生异常
    'a'				以写入的方式打开,如果文件存在,会在末尾追加写入
    'b'				以二进制打开,主要用于图片,视频
    't'				以文本的方式打开
    '+'				可以将r+w变成可读写模式
    'u'				通用换行符
    

    5、文件处理

    f = open("a.txt")
    
    print(f.readable())  # 判断当前文件是否可读
    print(f.writable())  # 判断当前文件是否可写
    
    # del f  # 回收变量资源
    f.close()  # 回收操作系统的资源
    
    
    with open('a.txt',mode='r')as rf,
            open('a.txt',mode='w')as wf:  # with会自动帮你回收操作系统的资源,无需自己操作
        print(rf.readable())
        print(wf.writable())
    
    # r进行转义
    with open(r'D:项目路径python13期day07a.txt')as f:
        print(f.read())   # 读取文件
    
    

    6、文件处理模式

    with open(r'th.jpg', mode='rb')as rf,
            open('xiawuchameilv.png', mode='wb')as wf:
        xiawuchameilv = rf.read()
        wf.write(xiawuchameilv)
    """
    打开文件的三种模式:
        r :
            1、只读
            2、如果文件不存在,会报错
        w:(慎用)
            1、只写
            2、如果文件不存在,则新建一个文件写入数据
            3、如果文件内存在数据,会将数据清空,重新写入
        a:
            1、追加写
            2、如果文件内存在数据,会在已有数据的后面追加数据
            3、如果文件不存在,则新建一个文件写入数据
    处理文件的模式:
        t
        b
    """
    

    7、文件打开模式

    with open(r'a.txt', 'r', encoding='utf-8')as f:
        print(f.readable())
        print(f.read())
        print(f.readline())  # 执行一次,打印一行内容
        print(f.readlines())
        print(f.read())
        print(f.readable())
        print(f.read())
    >>>True
    亚峰666
    
    []
    
    True
    
    with open(r'b.txt', 'w', encoding='utf-8')as f:
        f.writelines(["干巴爹
    ",'加油'])
    >>>干巴爹
       加油
    
    with open(r'aaaaa.txt','a',encoding='utf-8')as f:
        print(f.writable())
        f.write("
    努力,奋斗")
    >>>努力,奋斗
    

  • 相关阅读:
    爬虫(4)_代码分析
    python(32)——【shelve模块】【xml模块】
    python(31)——【sys模块】【json模块 & pickle模块】
    python(30)——【random模块】【if __name__ =='__main__'】【os模块】
    机器学习与Tensorflow(7)——tf.train.Saver()、inception-v3的应用
    机器学习与Tensorflow(6)——LSTM的Tensorflow实现、Tensorboard简单实现、CNN应用
    机器学习与Tensorflow(5)——循环神经网络、长短时记忆网络
    机器学习与Tensorflow(4)——卷积神经网络与tensorflow实现
    机器学习与Tensorflow(3)—— 机器学习及MNIST数据集分类优化
    机器学习与Tensorflow(2)——神经网络及Tensorflow实现
  • 原文地址:https://www.cnblogs.com/yafeng666/p/11814109.html
Copyright © 2011-2022 走看看