python 的文件系统 File 整理

348 阅读4分钟

文件 File

  • 文件是用于数据长期存储的单位
  • 文件通常用来长期存储数据
  • 文件中的数据是以字节为单位进行存储的

文件的操作流程

  1. 打开文件
  2. 读/写文件
  3. 关闭文件
  • 注:任何的操作系统,一个应用程序同时打开文件的数量有最大数的限制

文件的打开函数

  • open(file, mode='rt') 用于打开一个文件,返回此文件流对象,如果打开文件失败,则会触发OSError错误

文件的关闭方法

  • F.close() # 关闭文件,释放系统资源

文本文件操作

  • 操作模式:
    • 't'
  • 说明:
    • 默认文件中存储的都为字符串数据,在读写过程中会自动进行编解码操作
    • 文本文件以行为单位进行分隔,在python内部统一用'\n'作用为换行符进行分隔
    • 对文本文件的读写操作需要用字符串(str) 进行数据操作
  • 各操作系统的换行符
    • Linux 换行符: '\n'
    • Windows 换行符: '\r\n'
    • 新的Mac OS 换行符: '\n'
    • 旧的Macintosh换行符: '\r'(已不用)
方法说明
F.close()关闭文件(关闭后文件不能再读写会发生ValueError错误)
F.readline()读取一行数据,如果到达文件尾则返回空行
F.readline(max_xhars=-1)返回每行字符串的列表,max_chars为最大字符(或字节)数
F.writelines(lines)将字符串的列表或字符串的列表中的内容写入文件
二进制操作方法
F.read(size = -1)从一个文件流中最多读取size个字符(文本文件)或字节(二进制文件)
F.write(text)写一个字符到文件流中,返回写入的字符串(文本文件)或字节数
F.tell()返回当前文件流读写指针的绝对位置(字节为单位)
F.seek(offest, whence=0)改变数据流读写指针的位置,返回新的绝对位置
F.flush()把写入文件对象的缓存内容写入到磁盘
F.readable()判断这个文件是否可读,可读返回True,否则返回False
字符含义
'r'以只读模式打开
'w'已只写方式打开,删除原有文件内容(如果文件不存在,则创建该文件并以只写方式打开)
'x'创建一个新文件,并以写模式打开这个文件,如果文件存在则会产生"FileExistsError"错误
'a'以只写文件打开一个文件,如果有原有文件则追加到文件末尾
'b'用二进制模式打开
't'文本文件模式打开(默认)
'+'为更新内容打开一个磁盘文件(可读写)
  • 缺省模式是'rt'
  • 'w+b'可以实现二进制随机读写,当打开文件时,文件内容将被清零
  • 'r+b'以二进制读和更新模式打开文件,打开文件时不会清空文件内容
  • 'r+' 以文本模式读和更新模式打开文件,打开文件时不会清空文件内容

文件流对象是可迭代对象,迭代过程中将以换行符'\n'作为分隔符

  • 示例:
        f = open('phoneNumber.txt')
        for line in f:
            print(line) # 打印每一行数据
    

标准输入输出文件

  • sys.stdin 标准输入文件 ctrl + d 输入文件结束符
  • sys.stdout 标准输出文件
  • sys.stderr 标准错误输出文件
    • 模块名:sys
  • 注:标准文件不需要打开和关闭就可以使用

二进制文件操作

  • 二进制文件操作模式字符: 'b'
  • 默认文件中存储的是以字节为单位数据,通常有人为规定的格式,二进制文件操作需要用字节串进行读写
  • F.read()/F.readline() F.readlines() 返回类型
    • 对于文本文件,F.read()等函数返回字符串(str)
    • 对于二进制文件,F.read()等函数返回字符串(bytes)

F.tell 方法

  • 作用
    • 返回当前的读写位置(从文件头以字节为单位)

F.seek方法

  • F.seek(偏移量,whence=相对位置)
  • 偏移量
    • 大于0的数代表向文件末尾方向移动的字节数
    • 小于0的数代表向文件头方向中移动的字节数
  • 相对位置
    • 0 代表从文件头开始偏移
    • 1 代表从文件当前读写位置开始偏移
    • 2 代表从文件尾开始偏移

汉字编码(只讲两种)

  • 国标系列
    • GB18030 (二字节或四字节编码,共27533个字)
      • GBK (二字节编码,共21003个字)
        • GB2312(二字节编码,共6763个汉字)
    • (window常用)
  • 国际标准:UNICODE <---> UTF8
    • (Linux / Mac OS x / IOS / Android 等常用)

python编码字符串

  • gb2312
  • gbk
  • gb18030
  • utf-8
  • ascii
  • ...
  • 以上字符串用于encode 和 decode 中

编码注释

  • 在python源文件的第一行或第二行写入如下内容
    # -*- coding:gbk -*-
    # 设置源文件编码格式为gbk
    # -*- coding:utf-8 -*-
  • 作用: 告诉解释执行器,此前文件的编码