Python——文件读写
文件读取:
文件读取的步骤:1、打开文件 2、对它读、写 3、关闭文件
f= open('test.txt','w',encoding='utf-8')
f.read()
f.write()
f.close()
文件打开模式
r: 只读模式,对于文件只能读,不能写,打开文件不存在会报错。
r+ :读写模式, 打开文件不存在也会报错
w: 写模式。不能读,写入会覆盖以前文件里面的内容,文件不存在的话,会帮你创建一个。
w+:写模式。
#只要沾上r,文件不存在肯定会报错
#只要沾上w,文件内容肯定会被清空
a+:追加模式bbbbbbbbbbbbbbb。能读、能写、不会清空以前的内容,文件不存在会创建
文件打开模式:a+ 追加模式。r 只读模式;r+读写模式;w 写模式;w+ 写读模式。
文件指针:
文件以w或者w+的模式打开,文件指针在末尾,但因为此方式打开文件时候会清空文件内容,所以指针在文件的开始说法也对。
文件以r或者r+的模式打开,文件指针在开始。
文件以a+的模式打开,文件指针在末尾。
移动指针:
file.seek(0)
打开文件使用open()方法,举个栗子:
f = open(r'haha.txt','a+',encoding='utf-8')
r:打开的时候路径的前面加个‘r’可以防止遇到转义字符转义后无法打开。
路径和文件名称:r后面的字符串,是文件的路径。可以是物理路径。如果只写文件名,表示存在了和程序文件相同的路径下。
encoding:是编码格式:一般是设置为UTF-8
读取文件的几个方法:
f.read() #读取文件所有内容。返回的是字符串。
f.readline() #读取文件一行的数据 返回的是个list
f.readlines() #获取文件里面所有的数据,每一行的数据放到一个list里面,所以他是个list的数组。
可以使用 for line in f.readlines() 的方法遍历。
介绍一个从文件读取数据保存到字典的方法:
1、打开文件。2、读取文件数据。3.将数据分割为字符串,构造为list,再存入字典。4、关闭文件。
f = open(r'haha.txt','a+',encoding='utf-8')
a={}
f.seek(0)
for i in f:
[key,value]=f.strip().split(',')
a[key]=value
a就是最后用于存放文件数据的字典。
写入文件的方法:
f.write() #把字符串内容全部写入文件中
f.writeline() #向文件中写入一行数据,类型为list
f.writelines() #向文件中写入多行数据。类型为list
写入和读取举个字符串的栗子
names = ['lxy\n','zyf\n','zxd\n','lcs\n']
for name in names:
f.write(name+'\n')
f.writelines(names) #传一个list,然后把list里面的每一个元素写入到文件中
f.seek(0) #移动文件指针到最前面
f.close() #关闭文件
高效读取文件
f = open('test.txt',encoding='utf-8')
for line in f:
print(line)
高效的打开方法:使用with打开文件会自动关闭文件,不需要我们手动去关闭。
with open("test.txt",'a+',encoding-utf-8)as f
for i in f:
文件修改
f=open('test','a+',encoding='utf-8')
data=f.read ()
newdata=data.replace('old','new')
f.seek(0) #文件读完以后指针在最后,要写入,指针从新回到开始。但是a+追加模式都是在末尾加。所以不加指针操作也可以。
f.write(newdata)
f.flush()
f.close()
方式一:简单粗暴直接(文件数量小的时候可以),缺点是操作大文件时候效率差
1、先获取到文件的全部内容
2、修改内容
3、清空原文件内容
4、重新写入
f=open('test','a+',encoding='utf-8')
data=f.read ()
newdata=data.replace('123‘,‘Python’)
f.seek(0)
f.truncate()
f.write(new_data)
f.flush()
f.close()
方式二:高效的处理方式
1、先打开一个原文件,再打开一个空文件
2、循环处理原文件每一行的数据,处理完以后,写到新文件里
3、把原文件删除,把新文件的名字替换为原文件的名字
import os
with open('word.txt',encoding='utf-8') as f1,open('word2.txt','w',encoding='utf-8') as f2:
for line in f1:
line=line.ltrip() 去掉左边的空格
if line: 判断空行 非空即真
line=line.replace('你','you') 修改替换文件写入新文件
f2.write(line)
os.remove("word.txt")
os.rename('word2.txt','word.txt')
”test.txt")