• 字符编码及文件操作


    一,字符编码

    1,什么是字符编码

      计算机要想工作必须通电,也就是说‘电’驱使计算机干活,而‘电’的特性,就是高低电平(高低平即二进制数1,低电平即二进制数0),也就是说计算机只认识数字

      很明显,我们平时在使用计算机时,用的都是人类能读懂的字符(用高级语言编程的结果也无非是在文件内写了一堆字符),如何能让计算机读懂人类的字符?

      必须经过一个过程:

      字符--------(翻译过程)------->数字 

      这个过程实际就是一个字符如何对应一个特定数字的标准,这个标准称之为字符编码

    2,字符编码的使用

    上图所示,就是文本编辑器储存文件和编辑文件的过程:首先运行文本编辑器这个应用软件,然后将要打开的文件通过decode解码成unicode形式读到内存中。

    最后储存的时候是存到硬盘中的,为了节省资源,存储过程中,将unicode格式的二进制数在通过encode编码的过程存到硬盘中。

    但注意的一点是:用什么编码就要用什么解码,不然就会出现乱码的情况。

    unicode跟utf-8的区别:

    首先它们都是万国码,可以兼容各个国家的语言,但unicode把所有的语言都存成两个字节,对于一些不需要占用两个字节的语言来说(一个字节就可以搞定的语言)

    太浪费空间,所以就产生了utf-8,它可以判断字节的大小,从而省下了一定的内存空间,所以在硬盘中存储一般du用utf-8,但是因为要判断,所以运行速度明显降低,

    所以内存中就用unicode。

    Python解释器执行代码的过程:

      读取已经加载到内存的代码(unicode编码的二进制),然后执行,执行过程中可能会开辟新的内存空间。

      而执行过程中的编码就可以放任何形式的编码了,python3默认的是utf-8的格式,而python2默认的是ASCII码格式。

      可以在文件开头用#coding:utf-8更改默认格式。

    二,文件操作

    1,文件操作流程

    1. 打开文件,得到文件句柄并赋值给一个变量
    2. 通过句柄对文件进行操作
    3. 关闭文件

    2,基本操作

    r 读文件

    # f=open('1.1.py',encoding='utf-8')#打开文件
    # print(f.readable(),end="") #查看文件是否可读
    # print(f.readline(),end="")#读一行
    # print(f.readline(),end="")
    # print('-'*60)#这是分割线
    # print(f.read())#读剩下的文件
    # f.close()#关闭文件

    w写文件

    # f=open('wxp.txt','w',encoding='utf-8')
    # f.write('我有一头小毛驴
    ')#写入文件
    # f.writelines(['我从来都不骑
    ','有一天我心血来潮
    '])#写多行
    # f.close()

    a追加

    # f=open('wxp.txt','a',encoding='utf-8')
    # f.write('骑它去赶集
    ')
    # f.writelines(['握握手
    ','敬个礼
    '])
    # f.close()

    3,文件打开模式

    打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。

    打开文件的模式有:

    • r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
    • w,只写模式【不可读;不存在则创建;存在则清空内容】
    • x, 只写模式【不可读;不存在则创建,存在则报错】
    • a, 追加模式【可读;   不存在则创建;存在则只追加内容】

    "+" 表示可以同时读写某个文件

    • r+, 读写【可读,可写】
    • w+,写读【可读,可写】
    • x+ ,写读【可读,可写】
    • a+, 写读【可读,可写】

     "b"表示以字节的方式操作

    • rb  或 r+b
    • wb 或 w+b
    • xb 或 w+b
    • ab 或 a+b

     注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码

    4,上下文管理

    with open('wxp.txt','a',encoding='utf-8') as f : #这样打开就不用关闭了,自动会关闭。
        f.read()

    5,文件的修改

    import  os
    with open('wxp.txt','r',encoding='utf-8') as f_read,
        open('wxp_swap','w',encoding='utf-8') as f_write:
        for line in f_read:
            data=line.replace('','')
            f_write.write(data)
    os.remove('wxp.txt')
    os.rename('wxp_swap','wxp.txt')
  • 相关阅读:
    [安全相关]SQL注入
    [android] service基础
    [android] activity基础
    [javascript] 基础积累
    [CSS] 常用积累
    html & css
    时序图和活动图
    分析图书馆管理系统的5W1H
    风险分析
    PM案例分析(团队作业第三组)
  • 原文地址:https://www.cnblogs.com/wxp5257/p/7230840.html
Copyright © 2020-2023  润新知