美文网首页
python学习笔记之--文件操作

python学习笔记之--文件操作

作者: itsenlin | 来源:发表于2022-03-06 22:04 被阅读0次

    文件

    概念

    在python中文件的概念与*nix系统很类似,文件只是连续的字节序列。

    内建函数

    open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
    

    返回一个file类型对象,参数很多,但是常用的有三个filemodeencoding

    • file: 必需,文件路径(相对或者绝对路径)。
    • mode: 可选,文件打开模式,默认'r'
    • buffering: 设置缓冲,有以下取值
      1. 0表示不缓冲
      2. 1表示缓冲一行
      3. >1表示使用给定值为缓冲区大小
      4. -1表示使用系统默认缓冲
    • encoding: 默认使用utf8
    • errors: 报错级别
    • newline: 区分换行符
    • closefd: 传入的file参数类型
    • opener: 设置自定义开启器,开启器的返回值必须是一个打开的文件描述符。

    文件操作模式

    文件操作模式与C语言类似可以参考fopent()接口
    基本模式如下:

    模式 说明
    r 以读模式打开,指针指向文件开头
    wx 以写模式打开:如果文件已存在x模式会报错,而w模式会清空原有内容重新写入;如果文件不存在,两种模式都会新建一个文件
    a 追加模式:如果该文件已存在,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入
    b 二进制模式:不能单独使用,需要放在其他模式后面使用
    + 可读可写模式:不能单独使用,需要放在其他模式后面使用

    还有一些组合模式

    模式 说明
    r+w+a+ 以读写模式打开文件。区别:文件不存在时r+会报错,w+a+会新建;文件存在时a+指针指向文件结尾,r+w+指针指向文件开头
    rb+wb+ab+ 以二进制读写模式打开文件。区别:文件不存在时rb+会报错,wb+ab+会新建;文件存在时ab+指向文件结尾,wb+rb+指向文件开头
    rb 以二进制只读模式打开,指针会指向文件开头
    wbab 以二进制只写模式打开,区别:wb模式指针指向文件开头;ab模式指针指向文件结尾

    文件操作

    文件操作定式

    文件操作一般是三个步骤

    1. open接口打开一个文件,返回一个file对象
    2. 通过file对象对文件进行操作
    3. 调用file对象的close接口关闭文件

    第一步前面已经学习,这里学习下后面两步

    文件对象

    open接口返回值是一个file对象,文件的操作动作都需要依赖这个file对象;可以分为以下四类

    • 读操作
    接口 说明
    file.read([size]) 最多读取size个字节的数据放到字符串中返回,size不提供或者<0(默认-1),文件将读取到末尾
    file.readline([size]) 读取一行数据(包括行结束符),参数类似read接口
    file.readlines([size]) 读取文件所有行,以字符串列表形式返回;若给定size>0,返回总和大约为size字节的行, 实际读取值可能比 size较大, 因为需要填充缓冲区
    • 写操作
    接口 说明
    file.write(str) 将字符串写入文件,返回的是写入的字符长度。
    file.writelines(list) 向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符
    file.flush() 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
    • 指针移动操作
    接口 说明
    file.tell() 返回文件指针的位置
    file.seek(offset[, whence]) 移动文件读取指针到指定位置;offset表示偏移量,whence表示偏移的起始位置:0 代表从文件开头(默认);1 代表当前位置;2 代表文件末尾。
    • 文件关闭
    接口 说明
    file.close() 关闭文件。关闭后文件不能再进行读写操作。

    实例

    try:
        f = open("test.txt")
        for line in f.readlines():
            print(line)
    except IOError as err:
        print(f"find error when operate file: {err}")
    else:
        f.close()
    

    例子中当文件存在时,打印文件内容;当文件不存在时,会打印find error when operate file: <具体的错误信息>

    python语言中增加了一个上下文管理(with语句)简化了这种文件操作,不需要使用异常处理,上面例子可以改造成如下:

    with open("test.txt") as f:
        for line in f:
            print(line)
    

    深入

    标准文件

    类似C语言,程序运行过程中有三个标准文件默认可用:

    • stdin表示标准输入,一般键盘输入
    • stdout表示标准输出,一般是显示器显示,带缓冲
    • stderr表示标准错误,一般是显示器显示,不带缓冲

    在python中使用时,需要依赖sys模块:sys.stdinsys.stdoutsys.stderr

    文件系统操作

    对于文件系统操作,像目录操作、文件权限操作、文件路径操作等在python的os模块以及os.path模块中

    相关文章

      网友评论

          本文标题:python学习笔记之--文件操作

          本文链接:https://www.haomeiwen.com/subject/zppwrrtx.html