zoukankan      html  css  js  c++  java
  • Python 文件操作

    Python 文件操作

    打开文件方法

    f = open('file', 'r', encoding='utf-8')           # open()打开的文件用完后需要close()关闭
    f.close()
    
    with open('file', 'r', encoding='utf-8')as f:      # 通过with语句打开的文件无需手动关闭
        pass
    
    # with open(‘file1’,’r’)as f1, open(‘file2’,’r’)as f2:    # 支持同时对多个文件进行管理
    

    open()完整的语法:

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

    参数说明:

    • file: 必需,文件路径(相对或者绝对路径)
    • mode: 可选,文件打开模式
    • buffering: 设置缓冲
    • encoding: 一般使用utf-8
    • errors: 报错级别
    • newline: 区分换行符
    • closefd: 传入的file参数类型
    mode参数:
    模式 描述
    t 文本模式
    x 写模式,新建一个文件,如果该文件已存在则会报错
    b 二进制模式,处理二进制文件(rb、wb、ab)
    r 以只读方式打开文件。文件的指针将会放在文件的开头,这是默认模式
    r+ 打开一个文件用于读写。文件指针将会放在文件的开头
    w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,原有内容会被删除。如果该文件不存在,创建新文件
    w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,原有内容会被删除。如果该文件不存在,创建新文件
    a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入
    a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写
    文件缓存

    为了减少 IO 操作、提升效率,会使用缓冲区,在缓冲区储存满之后统一写入
    根据缓冲区大小可以分为:

    • 全缓冲
      • buffering 为大于 1 的整数,代表缓冲区大小
    • 行缓冲
      • buffering 等于 1,出现换行符 ' ' 就写入
    • 无缓冲
      • buffering 等于 0,无缓冲直接写入

    file对象常用的函数

    方法 描述
    file.close() 关闭文件。关闭后文件不能再进行读写操作
    file.flush() 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入
    file.fileno() 返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上
    file.isatty() 如果文件连接到一个终端设备返回 True,否则返回 False
    file.next 返回文件下一行
    file.read([size]) 从文件读取指定的字节数,如果未给定或为负则读取所有
    file.readline([size]) 读取整行,包括 " " 字符
    file.readlines([sizeint]) 读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区
    file.seek(offset[whence]) 设置文件当前位置
    file.tell() 返回文件当前位置
    file.truncate([size]) 从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后后面的所有字符被删除,其中 Widnows 系统下的换行代表2个字符大小
    file.write(str) 将字符串写入文件,返回的是写入的字符长度
    file.writelines(sequence) 向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符
  • 相关阅读:
    如何将网格式报表打印成其它样式
    拥有与实力不相称的脾气是种灾难——北漂18年(23)
    8.8.1 Optimizing Queries with EXPLAIN
    mysql 没有rowid 怎么实现根据rowid回表呢?
    secondary index
    8.5.5 Bulk Data Loading for InnoDB Tables 批量数据加载
    mysql 中key 指的是索引
    8.5.4 Optimizing InnoDB Redo Logging 优化InnoDB Redo 日志
    8.5.3 Optimizing InnoDB Read-Only Transactions 优化InnoDB 只读事务
    8.5.1 Optimizing Storage Layout for InnoDB Tables InnoDB表的存储布局优化
  • 原文地址:https://www.cnblogs.com/dbf-/p/11383283.html
Copyright © 2011-2022 走看看