打开关闭

打开文件

  • open(filename, mode,encoding,…)
    • name: 要打开的⽬标文件名的字符串(可以包含⽂件所在的具体路径)
    • mode: 设置打开⽂件的模式(访问模式): 只读、写⼊、追加等
    • encoding: 指定打开文件时的文件编码
      1. fp = open('test.txt', 'r', encoding='utf-8') # 新建 test.txt 文件,给予文件写入操作模式,并赋值给一个变量用于后续操作

      如果 mode 不设置,默认就是 r 模式

关闭文件

  1. fp.close()

无论做什么模式、方法操作,最后一定要关闭文件

文件编码

Python3 操作文件时,如果没有指定编码,默认将使用操作系统自带的编码。而 Python2 操作文件时,默认使用 UTF-8 编码

  1. fp = open('text.txt', 'w', encoding='utf-8')
  2. fp.write('你猜猜')
  3. fp.close()

通过指定编码解决 Python 打开文件出现乱码

访问模式

只读模式

  • r 即 read ,只读模式打开文件,如果文件不存在就报错
    • 不设置 mode 时,即默认文件为 r 模式
    • 文件指针在文件的开头
    • 只读模式打开文件时,就无法用于写入文件
    • rb ,二进制格式只读模式
    • r +,读写模式,即在读的基础上增加了写的功能,写入文件时,从开头开始编辑会覆盖原有内容
    • rb +,二进制读写模式
      1. fp = open('text.txt', 'r+', encoding='utf-8')

写入模式

  • w 即 write ,写入模式打开文件,文件存在则打开文件,并从开头开始编辑会覆盖原有内容。⽂件不存在则创建新文件
    • 写入模式打开文件时,不能用于读
    • wb,二进制格式写入模式
    • w +,读写模式。如果是去读,只会得到空字符串,因为原有内容被全部删除。不推荐使用
    • wb +,二进制读写模式
      1. fp = open('text.txt', 'wb', encoding='utf-8')
      2. fp.write('写入内容')
      3. fp.close()

追加模式

  • a 即 append ,追加模式,新的内容将会被写入到已有内容之后。文件不存在则创建新⽂件
    • 文件存在指针将会放在文件的结尾
    • 追加模式打开文件时,不能用于读
    • ab,二进制模式追加
    • a +,读写追加模式
    • ab +,二进制格式追加用于读写
      1. fp = open('text.txt', 'a', encoding='utf-8')
      2. fp.write('补充内容')
      3. fp.close()

      a 与 a+ 的区别在于,a 只能追加写入文件,不可读文件;而 a+ 既可以追加写入文件,也可以读文件。

操作方法

读取

  • read(),用于读取文件内容
    • 文件对象.read(size ),size 表示从文件中读取数据的长度(单位是字节)。如果不写 size,表示读取文件中所有的数据
    • 文件对象.readline(),按照行的方式一次性读取一行内容,如果读取到换行符或文件尾则返回一个空字符串
    • 文件对象.readlines(),按照行的方式把整个文件一次性读取,返回一个列表。其中每一行的数据是列表中一个元素,可进行迭代遍历
      1. fp = open('text.txt', 'r', encoding='utf-8')
      2. content = fp.read(2)
      3. fp.close()

写入

  • write(),用于写入文件内容
    • 文件对象.write( 内容 )
    • 文件对象.writelines(),写入一个字符串列表
      1. fp = open('test1.txt', 'w', encoding='utf-8')
      2. fp.write('xxxawa')
      3. f.close()
      1. fp = open('text.txt', 'r+', encoding='utf-8')
      2. fp.writelines(['hello', 'world'])
      3. fp.close()

指针

  • 获取指针,tell()
    • 用于获取文件指针的位置 ```python fp = open(‘text.txt’, ‘r’, encoding=’utf-8’) text = fp.read(5) print(text) result = fp.tell() print(result)

fp.close()

  1. - **操作指针,seek()**
  2. - 用于改变文件指针位置
  3. - 文件对象.seek( offset, from ), offset 表示偏移量,from 表示相对位置,相对位置如下:
  4. - 0: 表示从文件开头
  5. - 1: 表示当前位置
  6. - 2: 表示文件结尾
  7. ```python
  8. # 文件内容是 hello world
  9. fp = open('xxx.txt', 'r+', encoding='utf-8')
  10. fp.seek(6, 0)
  11. text = fp.read()
  12. print(text)
  13. fp.close()
  14. ----------------------------------------------
  15. >>> world

在 Python3 中,如果 from 的值不是等于 0 ,那么 offset 就必须为 0

高级操作

with…as

  1. with open('text.txt', 'w', encoding='utf-8') as fp:
  2. fp.write('test')

with 语句叫做 上下文管理器。该操作表示程序有没有发生异常,都会关闭文件,所以可以不用写 close() 且可以释放资源。建议使用该写法