模式 | 描述 |
---|---|
“r” | 为了读取打开一个文件 |
“w” | 为了写入打开一个文件,如果文件已存在,他的内容就被销毁 |
“a” | 打开一个文件从文件末尾追加数据 |
“rb” | 为读取二进制数据打开文件 |
“wb” | 为写入二进制数据打开文件 |
例子
#myfile文件,open函数,第一个参数路径,第二个参数读取
myfile = open("C:\\xxx\xxx\\1.txt","r")
mylist = myfile.readlines()读取每一行到每一个列表
print(myfile)#对象
print(mylist)#数据
myfile = open("C:\\xxx\xxx\\1.txt","r")
print(myfile.read(3))#没有参数,读取全部,有参数为n,读取n个字符
结果:132 参考上一张图
#myfile文件,open函数,第一个参数路径,第二个参数读取
myfile = open("C:\\xxx\xxx\\1.txt","r")
print(myfile.readline())#读取一行包含换行符
print(myfile.readline())
print(myfile.readline())
结果:1321321
撒旦撒
啊水水倒萨
#myfile文件,open函数,第一个参数路径,第二个参数读取
myfile = open("C:\\xxx\xxx\\1.txt","r")
print(myfile.readline(),end="")#读取一行包含换行符
print(myfile.readline(),end="")
print(myfile.readline(),end="")
结果:1321321
撒旦撒
啊水水倒萨
例子:如何查开房信息
myfile = open("C:\\xxx\xxx\\1.txt","r",error="ignore")#error解决解码jbk的问题
mylist = myfile.readlines()#读取每一行到每一个表
for line in mylist:#遍历列表
if line.find("王涛")!=-1:
print(line)
如果在上个例子中变成输入人名查找
myfile = open("C:\\xxx\xxx\\1.txt","r",error="ignore")
mylist = myfile.readlines()#读取每一行到每一个表
while True:
mystr=input"我要查谁"
for line in mylist:#遍历列表
if line.find(systr)!=-1:
print(line)
函数改造:
def load(path):
myfile = open(path, "r", error="ignore")
mylist = myfile.readlines()#读取每一行到每一个列表
return mylist
def find(mylist,findstr):
for line in mylist:
if line.find(findstr)!=-1
print(line)
mylist = load(r"C:\\xxx\xxx\\1.txt","r",error="ignore "")
while True:
mystr = input("要查谁")
find(mylist, mystr)
硬盘数据查询,减少内存消耗,上一个是内存查询
myfile = open(r"C:\\xxx\xxx\\1.txt","r",error="ignore")
findstr = input("我要查谁")
while True:
mystr = myfile.readline()#读取一行,读不到返回None
if mystr.find(findstr)!= -1:
print(findstr)
if not mystr:#读取不到跳出循环 not none=True
break
文件写入
w代表写入,重写,原来的文件会被覆盖
myfile = open(r"C:\\xxx\xxx\\1.txt","w")
myfile.write("12321321")
myfile.write("萨达苏")
myfile.close()#关闭
结果:1.txt文本会显示:12321321萨达苏 并没有换行
换行只需要:myfile.write(“12321321\n”)
close的作用
import time
w代表写入,重写,原来的文件会被覆盖
myfile = open(r"C:\\xxx\xxx\\1.txt","w")
myfile.write("12321321")
myfile.write("萨达苏")
time.sleep(30)#延迟30秒
myfile.close()#close,缓存区的内容在文件生效
会发现生成的1.txt并不会有内容写入,为什么呢?
没有close时,我们写入的write内容放入了缓存,而缓存不是实时写入的,比如说我们找班长买票,全去找他了,他就很烦,这时候我们一批一批的找他就会降低找他的次数,缓存也一样,比如输入凑够了10M,那么就进行一次输入,这样子就降低了硬盘的读写次数。
如果需要实时写入
myfile.flush()#立刻写入
查询保存数据
def load(path):
myfile = open(path, "r", error="ignore")
mylist = myfile.readlines()#读取每一行到每一个列表
return mylist
def find(mylist,findstr):
savefile=open("C:\\xxx\xxx\\1.txt"+findstr+".txt","w")
for line in mylist:
if line.find(findstr)!=-1
print(line)
savefile.write(line)#写入
savefile.close()
mylist = load(r"C:\\xxx\xxx\\1.txt","r",error="ignore "")
while True:
mystr = input("要查谁")
find(mylist, mystr)
结果:以搜王毅为例
类数据查询并保存
class Filefind:
def __init__(self,path):#构造
self.path=path
self.file = open(self.path, "r", errors="ignore")#打开文件
self.mylist=[]
def memload(self):
self.mylist=self.file.readlines()#载入文件到列表
def memsearch(self, findstr): # 在内存的list内部查找
for line in self.mylist:
if line.find(findstr) != -1:
print(line)
def memsearchsave(self,findstr,savepath): #在内存的list内部查找
savefile=open(savepath,"w") #写入
for line in self.mylist:
if line.find(findstr)!=-1:
print(line)
savefile.write(line) #保存
savefile.close()
def disksearch(self,findstr):
while True:
mystr=self.file.readline()
if mystr.find(findstr)!=-1: #找到
print(mystr)
if not mystr:
break
def disksearchsave(self, findstr, savepath):
savefile = open(savepath, "w") # 写入
while True:
mystr = self.file.readline()
if mystr.find(findstr) != -1: # 找到
print(mystr)
savefile.write(mystr) # 保存
if not mystr:
break
savefile.close()
def __del__(self):#销毁
self.file.close()#关闭文件
filekf =Filefind(r"C:\Users\Tsinghua-yincheng\Desktop\yinchengDay1\kaifangX.txt")
filedd=Filefind(r"C:\Users\Tsinghua-yincheng\Desktop\yinchengDay1\dangdangwang.txt")
print("开始检索开房")
filekf.disksearchsave("王涛",r"C:\Users\Tsinghua-yincheng\Desktop\wangtaokf.txt")
print("开始检索购书")
filedd.disksearchsave("王涛",r"C:\Users\Tsinghua-yincheng\Desktop\wangtaodd.txt")
版权声明:本文为weixin_45797937原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。