python 内置库 文件处理
io操作
文件操作步骤
- 打开文件
- 操作文件:读/写内容
- 关闭文件(读写完成,要及时的关闭)
open 方法
- file:文件的绝对路径或者相对路径
- mode:文件读写方式
- encoding:编码方式,有中文就要用utf-8
- buffering:缓冲区大小,默认是 -1,设置是1,则是遇到换行符就写入磁盘
- errors:当遇到编码或者解码错误的时候是否抛出
- closefd:文件描述符
- newline:设置换行符的标记。/r还是/n
文件读写模式
文件打开模式 |
描述 |
r |
以只读模式打开文件,并将文件指针指向文件头,如果文件不存在会报错 |
w |
以只写模式打开文件,并将文件指针指向文件头,如果文件存在则会将其内容清空,如果文件不存在,则会创建新文件 |
a |
以只追加可写模式打开文件,并将文件指针执行文件尾部,如果文件不存在则创建新文件 |
r+ |
在 r 的基础上增加可写功能 |
w+ |
在 w 的基础上增加可读功能 |
a+ |
在 a 的基础上增加可读功能 |
b |
读写二进制文件(默认是t,表示文本),需要写上面几种模式搭配使用, 如ab,wb,ab+,(POSI系统,包括 linux 都会忽略该字符) |
实战1
f = open('D:\\pythonProject2\\no2class\\dahuaxiyou2\\numbwe.txt', 'r', encoding='utf-8')
print(f.read())
f.close()
读操作
方法 |
描述 |
read() |
一次读取文件所有内容,返回一个str |
read(size) |
每次最多读取指定长度的内容,返回一个str,在python2中,size指定的是字节长度,在python3中,size指定的是字符长度,换行符算一个字符 |
readlines() |
一次读取文件所有内容,按行返回一个list |
readline() |
每次只读取一行内容 |
不关闭文件的危害
- 打开文件达到一定数量,将会导致打开失败
- 占用内存空间,非常浪费资源
- 会导致系统自动回收资源,从而丢失数据
推荐使用文件打开方式,会自动关闭
with open('D:\\pythonProject2\\no2class\\dahuaxiyou2\\numbwe.txt', 'r', encoding='utf-8') as f:
f.read()
print(f.closed) # 文件是否已关闭,结果是 True
读操作实战
f.read(10) # 指定读取长度为10的前10内容
f.readline() # 每次只读一行,从第一行开始
f = open('D:\\pythonProject2\\no2class\\dahuaxiyou2\\numbwe.txt', 'r', encoding='utf-8')
k = f.readlines()
f.seek(0)
for i in range(0, len(k)):
print(k[i])
写操作实战
- mode=‘w+’,读写权限,会新建文件,清空内容再写入
- mode=‘r+’,读写权限,逐个替换原来的内容
- mode=‘a+’,读写权限,追加内容
总结
- 使用 with 方法,会自动完成关闭操作
- 通过 python 封装的 API ,可以实现读、写、追加写入操作
- 文件打开要使用 utf-8 的编码格式,以免中文出现乱码