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位

    shift(小日子过得不错的日本人)

    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

    深浅拷贝

    深拷贝列表的id和原列表不一样,值的id也不一样,改变拷贝列表里的值,原列表不受影响

    浅拷贝列表id和原列表不一样,其他和深拷贝相反

    import copy   # 首先导入copy
    l1 = [257, 'a', [4, 5, 6]]  
    print(l1)
    print(id(l1))
    # print(id(l1[0]))    
    l3 = l1.copy    # 浅copy(用的不多)
    l2 = copy.deepcopy(l1)  # 深copy[1, 'a', [4, 5, 6]]
    l2[2][0] = 4444  
    print(l2)
    print(id(l2))
    print("l1:", l1)
    print("id_l1:", id(l1))


    文件处理


    什么是文件

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

    为什么要用文件

    因为人类和计算机要永久保存数据

    怎么用文件

    相对路径:a.txt 必须与当前py文件在同一级目录

    绝对路径:D:项目路径python13期day07a.txt

     

    'r'            以只读的方式打开文件(默认)
    'w'            以写入的方式打开文件,会覆盖已存在的文件
    'x'            如果文件已存在,用次模式打开会引发异常
    'a'            以写入模式打开,如果文件存在,在末尾追加写入
    'b'            以二进制打开,图片,视频
    't'            以文本打开
    '+'            可读写模式
    'u'            通用换行
    
    # 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())   # 读取文件
    

    文件打开模式

    """
    打开文件的三种模式:
        r :
            1、只读
            2、如果文件不存在,会报错
        w:(慎用)
            1、只写
            2、如果文件不存在,则新建一个文件写入数据
            3、如果文件内存在数据,会将数据清空,重新写入
        a:
            1、追加写
            2、如果文件内存在数据,会在已有数据的后面追加数据
            3、如果文件不存在,则新建一个文件写入数据
    处理文件的模式:
        t
        b
    0  
    # with open(r'dir.txt','r',encoding='gbk')as f:
    #     print(f.readable())
    # print(f.read())
    # print(f.readline())  # 执行一次,打印一行内容
    # print(f.readlines())
    # print(f.read())
    # print(f.readable())
    # print(f.read())
    # for i in f:
    #     print(i)
    
    
    # with open(r'dir.txt', 'w', encoding='gbk')as f:
    #     # f.write("上海校区第一帅-sean")
    #     f.writelines(["上午没翻车
    ",'我很高兴'])
    
    
    # with open(r'diraaaaa.txt','a',encoding='gbk')as f:
        # print(f.writable())
        # f.write("
    翻车是不可能的")
    
  • 相关阅读:
    api.js
    vue开关
    vue 单选框自定义
    vue 笔记
    Flutter 检测网络连接 监听网络变化
    lutter 调用原生硬件 Api 实现扫码
    flutter 支付宝支付流程以及用 Flutter 在 Android Ios 中实现支付宝支付
    js+css 动效+1的效果
    Vue -- filters 过滤器、倒计时效果
    移动端如何实现两行点点点?
  • 原文地址:https://www.cnblogs.com/zhangjinyi97/p/11815290.html
Copyright © 2011-2022 走看看