一、打开文件的几种模式
1.使用open()函数打开文件,创建一个file对象,例如:f = open(r'D:\haha.txt','a+',encoding='utf-8') 或 with open(r'D:\haha.txt','a+',encoding='utf-8') as f --该种写法不用关闭文件,用完自动关闭
文件路径前加'r'是防止字符转义的,如果路径中出现'\t'的话,不加r的话\t就会被转义 ,而加了'r'之后'\t'就能保留原有的样子
2. 几种模式(最常用的是a+):
'r': 默认值,表示从文件读取数据,文件不存在会报错,指针在文件的开头
'r+':打开一个文件用于读写,文件指针将会放在文件的开头。
'w':打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
'w+':打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
'a':打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
'a+': 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
二、几个方法
f.seek(0) #将指针的位置移动到开头,例如追加模式下要读取文件
f.read() #读取文件里面所有的内容,字符串
f.readline() #读取一行
f.readlines() #读取文件里的所有内容,返回的是一个list,每一行的内容就作为一个元素在list里面
f.write() #写一个字符串到文件
f.writelines(list) #写一个list,将list里的元素作为一行写入在文件里
f.close() #关闭文件
f.flush() #把缓冲区的数据立即写在磁盘上
f.truncate() #清空文件内容
f.tell() #获取当前文件指针的位置
三、文件修改的高效处理方式
思路:
1、先打开原来的文件,再打开一个空文件
2、循环处理原来文件里面每一行数据,处理完之后,写到新文件里面
3、把原来的文件删除,把新文件的名字改成原来文件的名字
例子:
import os
with open('words',encoding='utf-8') as fr, open('.words','w',encoding='utf-8') as fw:
for line in fr:
line = line.lstrip() #去掉左边的空格
if line:#判断这一行是否有数据
line = line.replace('你','you')#替换数据
fw.write(line)#写到新文件里面
os.remove('words')#删除原来的文件
os.rename('.words','words') #把新文件的名字改成原来文件的名字
四、Json模块
import Json
json.loads(user_info) #把json串(字符串)转成字典
json.load(f) #这个是直接从文件里拿,不需要再读一次文件了,json帮你读,转成字典了
json.dumps(stu_info) #把字典转成json(字符串)
json.dump(stu_info,f,ensure_ascii=False,indent=4)
#1.不需要咱们自己再write了,人家会转成json写入到文件 2.#ensure_ascii=False 解决了中文写入文件后乱码问题