zoukankan      html  css  js  c++  java
  • Python第六课(字符编码/文件操作)

    Python第六课(字符编码/文件操作)    >>>转到思维导图>>>转到中二青年

    字符编码

    # 字符编码针对的是文字。
    # 字符编码只跟文本文件有关。
    # 文本编辑器的输入和输出是两个过程。
    # 字符编码表就是字符与数字的对应关系
     
    ASCII码表 用八位二进制表示一个英文字符
     
    GBK 用2Bytes表示一个中文字符,还是用1Bytes表示一个英文字母。最多能表示65535个字符
     
    Unicode万国码 统一用2Bytes表示所有的字符
        1.浪费存储空间
        2.IO次数增加,程序运行效率降低(致命)
        
    # 当内存中的unicode编码格式数据存到硬盘的时候,会按照utf-8编码
     
    # 会将unicode的英文字符由原来的2Bytes变成1Bytes
    # 会将unicode中文字符由原来的2Bytes变成3Bytes
    # 现在的计算机内存都是unicode,硬盘都是utf-8
     
    unicode的两个特点
        1.用户在输入的时候,无论输什么字符都能够兼容万国字符
        2.其他国家编码的数据由硬盘读到内存的时候unicode与其他各个国家的编码都有对应关系
        
    # 数据由内存保存到硬盘
        内存中的unicode格式二进制数字 >>>编码(encode)>>>utf-8格式的二进制数据
    # 硬盘中的数据由硬盘读到内存
        硬盘中的utf-8格式的二进制数据>>>解码(decode)>>>内存中unicode格式的二进制数据
        
    # 保证不乱码在于文本文件以什么编码编的就以什么编码解
     
    # python2将py文件按照文本文件读入解释器中默认使用ASCII码
    # python3将py文件按照文本文件读入解释器中默认使用utf-8
     
    # 文件头 # coding:utf-8 因为所有的编码都支持英文字符,所以文件头才能够正常生效
    # python3中字符串默认就是unicode编码格式的二进制数
    # pycharm终端用的是utf-8格式,windows终端采用的是gbk格式。
     
    encode() # 将unicode编码成可以存储和传输的utf-8的二进制数据
    # bytes类型  字节串类型  你就把它当成二进制数据即可
    decode()  # 将硬盘中的utf-8格式的二进制数据解码成unicode格式的二进制数据
     
    x = ''
    res1 = x.encode('gbk')  # 将unicode编码成可以存储和传输的utf-8的二进制数据
    print(res1)  # b'xe4xb8x8a'
    # bytes类型  字节串类型  你就把它当成二进制数据即可
    res2 = res1.decode('gbk')  # 将硬盘中的utf-8格式的二进制数据解码成unicode格式的二进制数据
    print(res2)
     
     
    # 补充:
    # 你a他
    # 1Bytes|1Bytes|1Bytes|1Bytes|1Bytes|1Bytes|1Bytes
    # 1+7bit|1+7bit|1+7bit|1+7bit|1+7bit|1+7bit|1+7bit

    文件处理

    # 什么是文件?
    # 操作系统提供给用户操作复杂硬件(硬盘)的简易的接口。
     
    # 为什么操作文件?
    # 人或者应用程序需要永久的保存数据。
     
    # 打开文件的模式
        f = open() 文件句柄 = open('文件路径', '模式')
        
    # 打开文件的模式有(默认为文本模式):
        r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】 
        w,只写模式【不可读;不存在则创建;存在则清空内容】 
        a, 只追加写模式【不可读;不存在则创建;存在则只追加内容】
        t 文本文件   t在使用的时候需要指定encoding参数(如果不知道默认是操作系统的默认编码)
        b 二进制  一定不能指定encoding参数
        mode参数 可以不写  不写的话默认是rt 只读的文本文件  这个t不写默认就是t
        
    # 操作文件的方法
        f.read() # 读取所有内容,光标移动到文件末尾
        f.readline() # 读取一行内容,光标移动到第二行首部
        f.readlines() # 读取每一行内容,存放于列表中
        f.write('1111
    222
    ') # 针对文本模式的写,需要自己写换行符 
        f.write('1111
    222
    '.encode('utf-8')) # 针对b模式的写,需要自己写换行符 
        f.writelines(['333
    ','444
    ']) # 文件模式 
        f.writelines([bytes('333
    ',encoding='utf-8'),'444
    '.encode('utf-8')]) # b模式
        f.readable() # 文件是否可读 
        f.writable() # 文件是否可读 
        f.closed # 文件是否关闭 
            为防止忘记f.close(),推荐使用with关键字来帮我们管理上下文 
        with open('a.txt','w') as f:
        f.encoding # 如果文件打开模式为b,则没有该属性

    END

  • 相关阅读:
    C++ crash 堆栈信息获取(三篇文章)
    qt捕获全局windows消息(使用QAbstractNativeEventFilter,然后注册这个类)
    qt之fillder抓包(QT网络版有一些具体的坑)
    qt之窗口换肤(一个qss的坑:当类属性发现变化时需要重置qss,使用rcc资源文件)
    模块化开发AraeRegistration
    CLR的组成和运转
    开源框架Caliburn.Micro
    URL
    负载均衡架构
    C add
  • 原文地址:https://www.cnblogs.com/renvip/p/11140402.html
Copyright © 2011-2022 走看看