• 文件处理和字符编码


    一、基本的文件操作

    1. 什么是文件

    文件是操作系统为用户或应用程序提供的一个读写硬盘的虚拟概念。文件的操作是基于文件,即文件的操作核心,就是读和写。

    2. 文件的读和写

    2.1 文件的读取

    在Python中,我们使用open()方法可以打开某个具体的文件,open()方法内写入文件路径。

    open(r'C:Users12199Desktop新建文本文档.txt')

    如果想给列表增加值,我们要先给列表赋值后,才能给对应的列表增加值,文件也是一样。

    # 打开文件
    f = open(r'C:Users12199Desktop新建文本文档.txt')
    print(f)
    
    # <_io.TextIOWrapper name='C:\Users\12199\Desktop\新建文本文档.txt' mode='r' encoding='cp936'>
    

    我们开始读文件。

    # read模式打开文件
    f = open(r'C:Users12199Desktop新建文本文档.txt', mode = 'r')
    date = f.read()
    print(date)
    f.close()
    
    # Python无所不能
    

    2.2 文件的写入

    # write模式打开文件
    f = open(r'C:Users12199Desktop新建文本文档.txt', mode = 'w')
    f.write('<Python从入门到放弃>')
    f.close
    f = open(r'C:Users12199Desktop新建文本文档.txt', mode = 'r')
    date = f.read()
    print(date)
    f.close()
    
    # <Python从入门到放弃>
    

    在write模式,如果文件内有内容,会覆盖掉原先的内容,把新的内容写进去

    二、绝对路径和相对路径

    1. 绝对路径

    绝对路径就是从盘符(C盘、D盘)开始写一个完整的路径

    2. 相对路径

    相对路径就是从当前执行文件所在的文件夹开始寻找

    三、字符编码

    1. 什么是字符编码

    字符编码就是将人类的字符编码成计算机能识别的数字(0和1),这种转换必须遵循一套固定的标准,该标准无非是人类字符与数字的对应关系,称之为字符编码表。

    2.文本编辑器存取文件的原理

    1. 打开编辑器就打开了一个进程,是在内存中,所以,用编辑器编写的内容也是存放在内存中,断电了就会消失
    2. 我们想要永久保存数据,就要让编辑器把内存的数据存储到外存中

    字符编码有美国的ASCII码,中国的GBK编码,日本的Shift_JIS编码等等

    以中国早期的电脑为例,当我们利用编辑器读取文件的内容的时候,内存可以读取GBK编码,但不能读取其他类型的编码,读取就会乱码,为了解决这个问题,出现了Unicode编码。Unicode编码可以识别所有形式的编码,不管是GBK编码,还是ASCII码都可以,所以现在的内存都是以Unicode形式读取硬盘中的数据。

    当我们要把内存中的数据保存到硬盘中的时候,用Unicode的形式会占用更多的空间,所以这时候会把Unicode编码转换成utf-8的形式进行存储,以节省更多的空间。

    如何不乱码:字符用什么编码存,就用什么编码取

    四、Python2和Python3字符编码的区别

    python编辑器执行test.py的三个步骤

    1. 启动python解释器
    2. 相当于一个文本编辑器,从硬盘把test.py文件的内容读入内存,读取test.py中的内容(涉及了一次字符编码)
    3. 执行刚刚从硬盘中获取的内容(生成变量就会开辟内存空间存放变量,存放变量存放到内存中,这又涉及了一次字符编码)

    1. Python2

    在python2中会用Unicode编码存放变量,也会用文件默认的编码存放变量

    当用文件默认的编码存放变量的时候,如果终端默认的编码和文件默认的编码不一致,就会报错

    如果用Unicode编码存放变量,就不会出现问题

    2. Python3

    在python3中是用Unicode编码存放变量的,所以不会乱码

    五、文件的三种打开模式

    文件操作的基础模式有三种(默认的操作模式是r模式):

    • r模式为read
    • w模式为write
    • a模式为append

    文件读写内容的格式有两种(默认的读写内容的模式是b模式):

    • t模式为text
    • b模式为bytes

    注意:t模式和b模式都不能单独使用,都需要和r/w/a之一连用。

    1. 文件操作模式之r模式

    r:read,只读模式。不能写,文件不存在的时候会报错

    假设我们有一个叫f的文件对象,在r模式中,还有两种方法。

    f.readline()会从文件中读取单独的一行

    f.readlines()会读取文件中包含的所有行

    2. 文件操作模式之w模式

    w:write,只写模式。文件存在内容的时候会清空文件再写入内容;文件不存在的时候会创建文件再写入内容

    3. 文件操作模式之a模式

    a,可以追加。文件存在内容的时候会在文件的末端写入内容;文件不存在的时候回创建文件再写入内容

    4. 文件读写内容之b模式

    b模式是通用的模式,所有的文件在硬盘中都是以二进制的形式存储的。在b模式下,读写文件不能加上encoding参数,因为二进制不能再编码了。

    六、with管理文件操作上下文

    我们之前是使用open()方法打开文件,但open打开文件后,我们还要手动释放掉文件对操作系统的占用。

    这时候我们可以用with open()方法,with open()方法可以自动释放掉文件对操作系统的占用,还可以用逗号分隔,一次性打开多个文件,实现文件的快速拷贝

  • 相关阅读:
    nginx
    vue拦截
    时间转化封装
    Vue粒子特效(vue-particles插件)
    vscode 使用ESLint 自动检查,保存时自动格式化
    小程序请求封装
    common.js
    h5常见
    封装promise
    promise使用
  • 原文地址:https://www.cnblogs.com/yunluo/p/11317915.html
Copyright © 2020-2023  润新知