11.文件读写
AI-摘要
Tianli GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
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
5f = 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
5f = 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
5f = 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') |
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果