python文件管理

python文件管理

文件打开方式

只读模式 R默认的模式

​ 当文件不存在时就报错
当文件存在时,文件指针指向文件开头

只追加模式 a

​ 当文件存在时,新建一个空文档,文件指针跑到文件末尾
当文件存在时,文件指针跑到文件末尾

只写模式 W

​ 当文件不存在时,新建一个空文档
当文件存在时,清空文件内容,文件指针跑到文件开头,在文件打开不关闭的情况下,下一次的写入一定是基于上一次写入指针的位置连续的

读写模式 r+t w+t a+t

控制读写文件单位的方式:必须和文件打开方式连用

t模式:文本模式,必须指定encode参数,只能处理文本文件

b模式:二进制模式,一定不能指定encode参数,任何类型的文件都可以

文件内指针移动,f.seek 移动的是字节数

只有t模式下,rend(n)代表字符的个数

offset 代表移动的字节数

whence 代表参考什么位置开始移动

​ 0 代表参考文件开头 ,可以在t 和 b模式下使用
1 代表参考当前所在位置,必须在b模式下使用
2 代表参考文件末尾,必须在b模式下使用

修改文件的2种方式

方式一

​ 将文件全部读取到内存
在内存中修改好
将修改好的内容,覆盖写回硬盘

方式二

​ 以读的方式打开原文件,以写的方式打开一个临时文件
从原文件中每次读取一行,修改好写如临时文件中,直到源文件所有内容修改完毕后,存入临时文件中
删掉原文件,将临时文件的名字重命名为原文件的名字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# with open('c.txt','r+t',encoding='utf-8') as f:
# f.seek(21,0)
# f.write('[我擦勒]')

#修改文件内容的方式一:
#思路:先将原文件内容一次性全部读入内存,然后在内存修改完毕后,再
#覆盖写回原文件
#优点:在修改期间,文件内容只有一份
#缺点:当文件过大的情况下或占用过多的内存空间

with open('d.txt','rt',encoding='utf-8') as read_f:
msg=read_f.read()
msg=msg.replace('alex','xiang')
# print(msg)

with open('d.txt','wt',encoding='utf-8') as write_f:
write_f.write(msg)

#修改文件内容的方式二:
#思路:
#1、以读的方式打开原文件,以写的方式打开一个新文件
#2、从原文件中循环读取每一行内容修改后写入新文件
#3、删除原文件,将新文件重命名为原文件的名字

#优点:同一时刻只有一行内容存在于内存中
#缺点:在修改期间,文件内容始终存在两份,但修改完毕后会只留一份
import os
with open('d.txt','rt',encoding='utf-8') as read_f,\
open('d.txt.swap','wt',encoding='utf-8') as write_f:
for line in read_f:
write_f.write(line.replace('xiang','ALEXSB'))

os.remove('d.txt') # 删除老文件
os.rename('d.txt.swap','d.txt')
李江洋 wechat
添加微信,实地看房
欢迎联系我,带您实地看房