文件打开模式

打开模式 执行操作
‘r’ 以只读的方式打开文件 (默认)
‘w’ 以写入的方式打开文件, 会覆盖已存在的文件
‘x’ 如果文件已经存在, 使用此模式打开将引发异常
‘a’ 以写入模式打开, 如果文件存在, 则在末尾追加写入
‘b’ 以二进制模式打开文件
‘t’ 以文本模式打开 (默认)
‘+’ 可读可写模式 (可添加到其他模式中使用)
‘U’ 通用换行符支持

以下是打开文件使用的模式的列表 -

模式 描述
r 打开的文件为只读模式。文件指针位于文件的开头,这是默认模式。
rb 打开仅用二进制格式读取的文件。文件指针位于文件的开头,这是默认模式。
r+ 打开读写文件。文件指针放在文件的开头。
rb+ 以二进制格式打开一个用于读写文件。文件指针放在文件的开头。
w 打开仅供写入的文件。 如果文件存在,则覆盖该文件。 如果文件不存在,则创建一个新文件进行写入。
wb 打开仅用二进制格式写入的文件。如果文件存在,则覆盖该文件。 如果文件不存在,则创建一个新文件进行写入。
w+ 打开写入和取读的文件。如果文件存在,则覆盖现有文件。 如果文件不存在,创建一个新文件进行阅读和写入。
wb+ 打开一个二进制格式的写入和读取文件。 如果文件存在,则覆盖现有文件。 如果文件不存在,创建一个新文件进行阅读和写入。
a 打开一个文件进行追加。 如果文件存在,则文件指针位于文件末尾。也就是说,文件处于追加模式。如果文件不存在,它将创建一个新文件进行写入。
ab 打开一个二进制格式的文件。如果文件存在,则文件指针位于文件末尾。 也就是说,文件处于追加模式。如果文件不存在,它将创建一个新文件进行写入。
a+ 打开一个文件,用于追加和阅读。 如果文件存在,则文件指针位于文件末尾。 文件以附加模式打开。 如果文件不存在,它将创建一个新文件进行阅读和写入。
ab+ 打开一个二进制格式的附加和读取文件。 如果文件存在,则文件指针位于文件末尾。文件以附加模式打开。如果文件不存在,它将创建一个新文件进行读取和写入。

文件对象方法

文件对象方法 执行操作
f.close() 关闭文件
f.read(size = -1) 从文件读取size这个字符,当未给定size或给定负值的时候, 读取剩余的所有字符, 然后作为字符串返回
f.readline() 以写入模式打开, 如果文件存在, 则在末尾追加写入
f.write(str) 将字符串str写入文件
f.writelines(seq) 向文件写入字符串序列seq, seq应该是一个返回字符串的可迭代对象
f.seek(offset, from) 在文件中移动文件指针, 从from ( 0代表文件的起始位置, 2代表文件末尾 ) 偏移offset个字节
f.tell() 返回当前在文件中的位置

文件对象属性

打开一个文件并且有一个文件对象后,可以获得与该文件相关的各种信息。
以下是与文件对象相关的所有属性的列表 -

属性 描述
file.closed 如果文件关闭则返回true,否则返回false。
file.mode 返回打开文件的访问模式。
file.name 返回文件的名称。

创建文本文件

  1. f = open('E:\\001笔记大全\\008Python01\\test2.txt', 'w')

打开文件 open()

image.png

  1. f = open('E:\\001笔记大全\\008Python01\\test.txt', 'r')

文件内容 .read()

size 默认参数 -1 表示读取文件内 所有的数据都会返回出来
如果 填 5 就会只读文件内 前面5个字符

  1. f.read(5)
  2. # 打印
  3. 你好世界,

当前指针位置 .tell()

就是说告诉我们当前文件指针所在的位置, 类似 你读到那个位置字符的位置
一个中文汉字 表示2 个字节 其它均表示 1 个字节

  1. f = open('E:\\001笔记大全\\008Python01\\test.txt', 'r')
  2. print(f.read(5))
  3. print(f.tell())
  4. f.close()
  5. # 打印
  6. 你好世界,
  7. 9

修改指针所在位置 .seek()

有2个参数

  • 指定指针位置 偏移
  • 从那个位置开始计算 0 从其实位置 2 表示从末尾位置 ```python f = open(‘E:\001笔记大全\008Python01\test.txt’, ‘r’) print(f.read()) print(f.tell()) print(f.seek(40, 0))

打印

  1. 张三:你好世界, 有可能
  2. 李四:在你家门口
  3. 张三:没有看到啊, 你是不是走错门了?
  4. 李四:是吗?我再看看!
  5. 95
  6. 40
  1. <a name="iS7qj"></a>
  2. ### 读取一行文本内容 .readline()
  3. 前提是知道当前指针在那个位置<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/10367081/1644583841505-e4376c27-d9c5-45d0-8e59-fdd4fd45d3f3.png#clientId=u72bc5a90-bf8d-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=168&id=uf82b2e03&margin=%5Bobject%20Object%5D&name=image.png&originHeight=168&originWidth=355&originalType=binary&ratio=1&rotation=0&showTitle=false&size=10383&status=done&style=none&taskId=u4e47593e-efdb-41da-8ba6-e5882ebee27&title=&width=355)
  4. ```python
  5. # 打开文件
  6. f = open('E:\\001笔记大全\\008Python01\\test.txt', 'r')
  7. # 读取文件内容,不填参数,默认返回全部
  8. print(f.read())
  9. # 定位指针所在位置, 如果是读取文件内容全部,就会返回最后的位置
  10. print(f.tell())
  11. # 修改指针位置 从45字节的位置 0 开始打印
  12. print(f.seek(40, 0))
  13. # 一行内容
  14. print(f.readline())
  15. f.close()
  16. # 打印
  17. 张三:你好世界, 有可能
  18. 李四:在你家门口
  19. 张三:没有看到啊, 你是不是走错门了?
  20. 李四:是吗?我再看看!
  21. 95
  22. 40
  23. 张三:没有看到啊, 你是不是走错门了?

遍历文件内容

  1. f = open('E:\\001笔记大全\\008Python01\\test.txt', 'r')
  2. f.read()
  3. f.seek(0,0)
  4. for temp in f:
  5. print(temp)

写入文件 .write()

  1. # 模式 a 只追加内容
  2. # 模式 w 如果没有这个文件,则会创建新的文件名,如果存在则会覆盖内容
  3. f = open('E:\\001笔记大全\\008Python01\\test.txt', 'a')
  4. f.write('我是写入的字符内容\n')
  5. f.close()

上下文 with

  1. with open('E:\\001笔记大全\\008Python01\\test2.txt', 'w') as f:
  2. f.write("Hello")
  3. # 写入数据 Hello
  1. 使用with as 就会把返回的东西赋值给了 f ,然后f 就可以调用 文件的方法了,并默认书写 关闭文件的方法