11.文件读写

11.文件读写
Pupper文本文件的打开分为两种模式:文本模式 、二进制模式
通常,对 文本文件 都是以 文本模式 打开。程序读取 和 写入 的都是 字符串 对象。
一、 open 函数
1. open 函数的参数
open 函数的参数:
| 1 | open( | 
- 参数 file- 指定需要打开文件的 路径
- 可以是 相对路径
- 也可以是 绝对路径
 
- 参数 mode- 指定文件打开的 模式- r:只读文本模式打开,默认模式
- w:只写文本模式打开
- a: 追加文本模式打开
 
- 默认值为 r
 
- 指定文件打开的 模式
- 参数 encoding- 指定读写文本文件时,使用的 字符编解码 方式
- 未指定参数值时,会使用系统缺省字符编码方式(中文 windows 系统上使用的是 cp936,也就是 GPK 编码
 
2. 文件读写模式
| 模式 | 可做操作 | 文件不存在时 | 光标位置 | 是否覆盖 | 
|---|---|---|---|---|
| r | 只读 | 报错 | 起始 | - | 
| r+ | 可读可写 | 报错 | 起始 | 是 | 
| w | 只写 | 创建 | 起始 | 是 | 
| w+ | 可读可写 | 创建 | 起始 | 是 | 
| a | 只写 | 创建 | 末尾 | - | 
| a+ | 可读可写 | 创建 | 末尾 | - | 
- r+:可读可写- 读取、写入 文件时,需要 文件存在
- 文件写入内容后,立即读取时需要 调整光标位置,否则读取信息为空。
 
- w+:可读可写- 在文件读取时,默认是 先写后读 ,直接读取文件时系统会默认写入一个 空值 ,覆盖原有的内容,所以读取内容为 空 。
- 文件写入内容后,立即读取时需要 调整光标位置,否则读取信息为空。
 
- a+:可读可写- 读取文件时,需要 调整光标的位置 ,否则读取信息为空。
 
3. 文件写入
| 1 | # 指定编码方式为 utf8 | 
使用 w 或者 w+ 模式时,会将文件原有内容 删除 。
4. 读取文件
| 1 | # 指定编码方式为 gbk,gbk编码兼容gb2312 | 
5. read、readline、readlines 的区别
| 函数 | 默认读取范围 | 换行符 | 返回结果 | 
|---|---|---|---|
| read | 一次性读取所有内容 | 不读取文章末尾的换行符 | 返回的是整个内容的字符串 | 
| readline | 一行一行的读取文件内容 | 会读取文章末尾的换行符 | 返回每一行,也是字符串 | 
| readlines | 一次性读取所有内容 | 会读取文章末尾的换行符 | 返整个内容列表(一行一个元素) | 
- read()方法- 1 
 2
 3
 4
 5- f = open(r"G:\6Tipdm\file_read_write\test.txt","r",encoding="utf-8") 
 data = f.read()
 print(type(data))
 print(data)
 f.close()
- readline()方法- 1 
 2
 3
 4
 5- f = open(r"G:\6Tipdm\file_read_write\test.txt","r",encoding="utf-8") 
 for i in range(3):
 data = f.readline().strip()
 print(data)
 f.close()
- readlines()方法- 1 
 2
 3
 4
 5- f = open(r"G:\6Tipdm\file_read_write\test.txt","r",encoding="utf-8") 
 data = f.readlines()
 print(type(data))
 print(data)
 f.close()
6. 光标移动( seek()函数)
- seek(m, n)函数- m:开始的偏移量,也就是代表需要移动偏移的字节数,如果是负数表示从倒数第几位开始。- 0 :光标移动到文件 开始位置
- -1 :光标移动到文件 末尾位置
 
- n:默认为 0 ,不需要写,当写 1 或者 2 时 ,需要在 rb 模式 (二进制模式)下才能生效- 0 :代表从文件开头开始算起
- 1 :代表从当前位置开始算起
- 2 :代表从文件末尾算起。
 
 
二、 with 语句
with 语句 :打开文件时,不需要我们调用 close 方法 关闭文件
| 1 | # open返回的对象 赋值为 变量 f | 
with open 可以同时打开多个文件
| 1 | with open('d:/200906.txt')as file1,open('d:/200906_1.txt') as file2: | 
三、 写入缓冲
| 1 | f = open('tmp.txt','w',encoding='utf8') | 
代码在未执行 f.close() 语句之前,写入内容是存放在 **缓冲区,在 缓冲区 未堆满或者 未执行 关闭文件 语句之前,写入内容不会写入文件。
如果需要立即写入文件,则需要使用 flush 方法
| 1 | f = open('tmp.txt','w',encoding='utf8') | 
 评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果















