zoukankan      html  css  js  c++  java
  • Day 07 字符编码,文件操作

    今日内容

    1.字符编码:人识别的语言与机器识别的语言转换的媒介

    2.字符与字节:字符占多少字节,字符串转换

    3.文件操作:操作硬盘的一块区域

    字符编码

    重点:什么是字符编码

    人类能识别的字符等高级标识符,电脑只能识别0,1组成的标识符,要完成人与机器之间的信息交流,一定需要一个媒介,进行两种标识符的转化(两种表示符的对应关系)

    对应关系形成的结构称之为:编码表

    了解:编码表的发展史

    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,采用编码来解释文本内容

     

    思考:unicode与utf-8什么关系

    unicode:用2个字节来存储汉字,用2个字节来存储英文字母,占有空间较多,读取效率极高

    utf-8:用3-6个字节来存储汉字,用1个字节来存储英文字母,占有空间较少,读取效率低

    总结:内存都是按unicode存储数据,硬盘和cpu采用utf-8来存储数据

     

    unicode与utf-8采用的是一张unicode编码表,utf-8是unicode编码表体现的方式,变长存储数据

    变长有点:(大量数据又是以英文存在,所以utf-8空间更小)传输速度更快

     

    乱码:存数据与读数据采用的编码表不一致

    软件打开文件读取数据的流程:
    1. 打开软件
    2. 往计算机发生一个打开文件的指令,来打开文件
    3. 读取数据渲染给用户(存取编码不一致:乱码)

     

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

     

    解释失败的原因:
    py2默认按ASCII来解释文件内容 | py3默认按UTF-8来解释文件内容

     

    文件头:# encoding: 编码表
    功能:告诉py解释器按照什么编码来解释文件内容

    编码解码

    1.unicode字符串,默认字符串

    s1 = u'abc你好 不好'

    ...

    abc你好
    不好

    2.字节字符串

    s2 = b'abc123xb7xb7'

    ...

    b'abc123xb7xb7'

    3.原义字符串:不对字符串内存做任何操作

    s3= r'abc你好 不好'

    ...

    abc你好 不好

    编码与解码

    s = ‘123呵呵’

    n_b = bytes(s,encodeing='utf-8')

    ===>b'123xe5x91xb5xe5x91xb5'

    b = b'123xe5x91xb5xe5x91xb5'

    n_b = str(s,encodfing='utf-8')

    ===>123呵呵

     

    重点:

    将u字符串编码成b字符串

    print(u'您好'.encode('utf-8'))===>b'xe4xbdxa0xe5xa5xbd'

    将b字符串解码成u字符串

    print(b'xe4xbdxa0xe5xa5xbd'.decode('utf-8'))===>你好

     

    文件操作

    文件:硬盘中一块存储空间(虚拟的文件)

    文件操作:根据文件名来操作硬盘的那块存储空间,操作方式 读read 写write

    一、使用文件的三步骤

    1.打开文件

    变量名=文件空间

    文件路径 操作模式(读|写)编码

    f = open('a.txt','r',encoding='utf-8')

    2.操作文件

    data = f.read(3)  #将所有内容读取出来,如果设置读取长度,按照规定长度读取数据

    一次读取一行

    line = f.readline()

    按行一次性全部读出

    lines = f.readlines()

    逐行一行一行读取

    l = []

    for line in f:

      l.apped(line)

    print(l)

    去重set读取

    s = set()

    for line in f:

      s.add(line)

    print(s)

    3.关闭文件

    f.close()  #释放操作系统对文件的持有,变量f还被应用程序持有

    #del f 系统自动回收

    二、模式

    主模式:r:读 | w:写 | a:追加

    从模式:b:按字节操作 | t:按字符操作 | +:可读可写

    了解:x:异常写 | U:被遗弃了

    基础写

    文件不存在:会新建文件,再操作文件

    文件存在:先清空文件,再操作文件

    w = open('b.txt','w',encoding='utf-8')

    w.write('123')

    w.close()

  • 相关阅读:
    mvc razor中renderPartial,RenderAction,Partial,Action的使用选择
    jquery最常用的几个方法。——可删除
    配置文件参数引用
    tinkphp5.0目录结构说明
    ionic ios上状态栏和app重叠解决方案
    cordova-plugin-alipay-v2使用篇(更新至20170725)(亲测可用)
    Ionic2 App Import BrowserAnimationsModule or NoopAnimationsModule问题
    ionic3.0 中带顶部导航的下拉刷新列表的实现
    npm install 时 提示err code EINTEGRITY报错
    ionic3.0 alipay-base插件移除后会添加多余的链接文件在nodes-modules中,导致再安装其他插件或移除插件时报错问题
  • 原文地址:https://www.cnblogs.com/zhengyuli/p/10600227.html
Copyright © 2011-2022 走看看