• Day——07


    一 今日内容
    1 字符编码:人识别的语言与机器识别的语言转化的媒介*****
    CPU:将数据渲染给用户,中央处理器
    内存:临时存放数据,断电后消失
    硬盘:永久存储数据,断电后还在
    乱码:存数据与读书节采用的编码表不一致

    软件打开文件读取数据的流程:
    1 打开软件
    2 往计算机发送一个打开文件的指令,来打开文件
    3 读取数据渲染给用户

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

    解释失败的原因:
    python2默认按照ASCII来解释文件内容 | python3默认按UTF-8解释文件内容
    文件头: 格式 # encoding:编码表
    功能:告诉python解释器按照什么编码来解释文件内容
    什么是字符编码
    人类能识别的是字符等高级标识符,电脑只能识别0,1,要完成人与机器之间的信息交流,
    一定需要一个媒介,进行两种标识符的转化(两种标识符的对应关系)
    对应关系形成的结构称之为:编码表
    编码表有哪些类型:
    了解:编码表的发展史
    1 ascii(ASCII):字母,数字,英文符号与计算机01标识符的对应关系
    2 中国:研究汉字与计算机01标识符的对应关系:改变GB2312=>GNK(***)=>GB18030
    日本:shift_JIS
    棒子:Euc-kr
    3 制造一个可以完成万国字符与计算机01表示福的对应关系的编码
    万国编码表:unicoad表
    python2:用ASCII来读数据,没有按万国编码读,源影视python2先诞生万国编码
    python3:UTF-8,采用万国编码来解释文本内容

    思考:unicode与utf-8什么关系
    unicode:用2个字节来存储汉字,用2个字节来存储英文字母,占有空间校多,读取效率极高
    utf-8:用3-6个字节来存储汉字,用1个字节来存储英文字母,占有空间较少,读取效率低
    总结:
    内存都是按unicode存储数据,硬盘和cpu采用utf-8来存取数据

    unicode与utf-8采用的是一张编码表,utf-8是unicode编码表的提现方式,变长存储数据
    变长存取数据优点:(大量数据都是一英文存在,所以utf-8空间更小)传输速度跟快
    三种字符串
    unicode字符串,默认字符串
    s1 = u'abc你好 不好'
    print(s1)
    字节字符串
    s2 = b''
    原义字符串:不对字符串内部组任何操作
    s3 = r'abc你好 不好'
    print(s3)

    编码与解码
    s = '123呵呵'
    n_b = bytes(s,encoding = 'utf-8')
    print(n_b)

    b = b'123xe4xbdxa0xe5xa5xbd'
    n_s = str(b,encoding='GBK')
    print(n_s)
    将u字符串编码成b字符串
    u''.encode()
    print(u'你好'.encode('utf-8'))
    将b字符串编码成u字符串
    b''.decode
    print(b'xe4xbdxa0xe5xa5xbd'.decode('utf-8'))
    2 字符与字节:字符占多少字节:字符串转换***
    3 文件操作:操作硬盘中的一块区域:读写操作*****
    计算机中的文件:硬盘中一块存储(虚拟的文件)
    文件操作:根据文件名来操作硬盘的那块存储空间,操作方式 read 和 write
    1 三步骤: 打开文件------使用文件------关闭文件
    a 打开文件
    变量名 = 文件空间
    文件的路径 操作模式(读|写)编码
    f = open('a.txt','r',encoding='utf-8')
    b 操作文件
    data = f.read() ps 将所有内容读取出来,如果设置读取长度,按照规定长度读取数据
    print(data)

    一次一行
    line = f.readline()
    print(line)


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

    逐行读取
    l = []
    for line in f;
    # print(line)
    l.append(line)
    print(1)
    c 关闭文件
    f.close() #释放操作系统对文件的持有,变量F还被引用的程序持有

    print(f)
  • 相关阅读:
    MX550如何?说些你不知道的事情
    WinUI 及其前身比较
    C# 子线程快速终止的几个办法
    实现web实时消息推送的7种方案
    关于ReactNative 的一点个人见解
    superset docker 部署
    .NET 7 性能改进 至今为止最快的.NET平台
    网易严选多端组件库OSSA正式开源
    npm太慢, 淘宝npm镜像使用方法
    CocoaPods换源
  • 原文地址:https://www.cnblogs.com/xuzhaolong/p/10599950.html
Copyright © 2020-2023  润新知