一、文件操作:
基本操作:
f=open('a.txt',encoding='utf-8') #默认不写就是只读模式,有汉字要加utf-8(写文件路径时加个r防止被转译,例如r'c:user)
f.readlines() #把文件所有的内容都读出来,放到list里面
f.readline() #每次指读一行,
f.read() #读所有内容
f.close()#关闭文件
f.write('123 ') #只能写字符串
f.writelines([12,34]) #只要是循环的都可以写,可以写列表
f.tell() #获取当前指针的位置
f.seek(0) #把文件指针移到某位置,0表示最前面
f.truncate() #清空文件内容
f.fulsh() #写入文件后,刷新缓冲区立即把数据写到磁盘里
#使用with方式打开文件就不需要自己关文件了
with open('a.txt') as f:
#打开多个文件中间用,连接
with open('a.txt') as f,open('a2.txt','w',encoding='utf-8') as f2:
文件操作的几种模式:
名称 | 模式 | 说明 |
r | 读 | 能读,不能写,打开不存在的文件会报错 |
w | 写 | 能写,不能读,写的时候会清空以前的内容 |
a | 追加 | 能写,不能读,写时不会清空以前的内容,如果文件不存在会创建一个新的文件 |
r+ | 读写模式 | 能读能写,打开不存在的文件会报错 |
w+ | 写读模式 | 能读能写,打开文件的时候会清空以前的内容 |
a+ | 追加读模式 | 能读能写,文件指针在最末尾,打开文件时不会清空以前的文件, |
读取大文件时高效的方法:
用read()和readlines()方法操作文件的话会非常卡,我们用一个高效的方法,每次读取一行释放一行:
f=open('file.txt',encoding='utf-8')
for line in f:
print('每一行的内容:',line)
修改文件:
有2种方法,第一种是直接修改,修改后清空原有内容,再把修改后的内容写到文件里。第二种是打开2文件,把修改的内容写到一个新的文件里
第一种:
f=open('a.txt','a+',encoding='utf-8')
f.seek(0)
result=f.read()
new_result=result.replace('abc','ABC')
f.seek(0)
f.truncate() #清空文件内容
f.write(new_result)
f.close()
第二种:
import os
f1=open('a.txt',encoding='utf-8')
f2=open('a2.txt','w',encoding='utf-8')
for line in f1: #循环a.txt的每一行
new_line=line.replace('1','一') #将1替换成一
f2.write(new_line)
f1.close()
f2.close()
os.remove('a.txt')
os.rename('a2.txt','a.txt')
二、Json操作
json串就是字符串,python中json串只能是双引号,文件中写入的内容只能是字符串。
1、json.dumps()和json.loads()可将转换的内容存到文件或数据库里
d={'name':'abc'}
import json
json_str=json.dumps(d) #把字典/list转换成字符串(json)
print(json_str)
json_str2='{"name": "abc"}'
dic=json.loads(json_str2) #把字符串(json)转换成字典
print(dic)
2、只针对文件操作的json.dump()和json.load()
ensure_ascii=False 可将json中的汉字显示出来
#将json串转换成字符串,写进文件
f=open('tata.json','w',encoding='utf-8')
json.dump(d,f,ensure_ascii=False,indent=4)
#将读出来的json串转成字典(load方法可自动读文件)
f=open('tata.json',encoding='utf-8')
dic=json.load(f)
print(dic)