01-文件的编码
文件编码
02-文件的读取操作
什么是文件?
mode常用的三种基础访问模式
""" 演示文件的读取 """ #打开文件 f = open("E:/测试.txt","r",encoding="UTF-8") print(type(f))
可以先在电脑的某一个盘中创建一个txt文件,可以对其进行打开,读取,其代码是UTF-8,读取其类型是
那么得到的这个文本对象,有哪些可以进行的操作呢?
读操作相关方法
在读取文件内容之前,可以先查看一下记事本的内容如下:
""" 演示文件的读取 """ #打开文件 f = open("E:/测试.txt","r",encoding="UTF-8") # print(type(f)) #读取文件-read(),如读取10个字节 print(f"读取10个字节的结果:{f.read(10)}")
print(f"读取全部内容的结果是:{f.read()}")#在不给参数的情况下,读取全部内容
注意:连续两次读取的话,上一次读取的内容,下一次不会再读取。
#读取文件--readLines() lines=f.readlines()#读取文件的全部行,封装到列表中 print(f"lines对象的类型是:{type(lines)}") print(f"lines对象的内容是:{lines}")
调用一次读取一行内容。
#打开文件 f = open("E:/测试.txt","r",encoding="UTF-8") #读取文件--readline() line1=f.readline() line2=f.readline() line3=f.readline() print(f"第1行数据是:{line1}") print(f"第2行数据是:{line2}") print(f"第3行数据是:{line3}")
#打开文件 f = open("E:/测试.txt","r",encoding="UTF-8") #for循环读取文件行 for line in f: print(f"每一行数据:{line}")
文件的关闭
若文件没有关闭,则这个文件会一直占用python程序,所以要关闭这个文件
#文件的关闭 f.close()
通过这种写法,可以自动完成对文件的close操作。
#with open 语法操作文件 with open("E:/测试.txt","r",encoding="UTF-8") as f: for line in f: print(f"每一行数据:{line}")
并且此时我们对这个文件进行操作时候,可以在E盘内将其删除等一系列操作。
操作汇总
课后练习-单词计数
通过Windows的文本编辑器软件,将如下内容,复制并保存到: word.txt,文件可以存储在任意位置
chengxuyuan itxuexi python itxuexi python itxuexi beijing shanghai itxuexi shenzhen guangzhou itxuexi wuhan hangzhou itxuexi zhengzhou bigdata itxuexi
通过文件读取操作,读取此文件,统计itxuexi单词出现的次数
1.read(),count("itxuexi")
2.一行行的读取文件 按照空格切分,统计itxuexi的次数
#打开文件,以读取模式r打开 f=open("D:/word.txt","r",encoding="UTF-8") #方式1:读取全部内容,通过字符串count方法统计itxuexi单词数量 content=f.read() count=content.count("itxuexi") print(f"itxuexi在文件中出现了:{count}次") #最后关闭文件 f.close()
#打开文件,以读取模式r打开 f=open("D:/word.txt","r",encoding="UTF-8") #方式2:一行一行的读取内容 for line in f: words=line.split(" ")#以空格切分单词,但是可以发现,每一行的末尾会有一个换行符号\n print(words)
有反斜杠n的是无法被统计出来的,所以要踢出反斜杠n。可以用line.replace,把反斜杠n去部踢出掉。也可以用line.strip()去除开头和结尾的空格以及换行符。
#打开文件,以读取模式r打开 f=open("D:/word.txt","r",encoding="UTF-8") #方式2:一行一行的读取内容 for line in f: line=line.strip()#去除开头和结尾的空格和换行符 words=line.split(" ")#以空格切分单词,但是可以发现,每一行的末尾会有一个换行符号\n print(words)
很明显换行符都没有了,不在影响结果。可以统计itxuexi的数量了,定义count来统计数量。
#打开文件,以读取模式r打开 f=open("D:/word.txt","r",encoding="UTF-8") #方式2:一行一行的读取内容 count=0 for line in f: line=line.strip()#去除开头和结尾的空格和换行符 words=line.split(" ")#以空格切分单词,但是可以发现,每一行的末尾会有一个换行符号\n for word in words: if word=="itxuexi": count+=1 print(f"itxuexi出现的次数是:{count}") #最后关闭文件 f.close()
03_文件的写入-write
如何调用方法把内容写入到文件中?
""" 演示文档的写入 """ #打开文件,不存在的文件,用w模式进行写文件 import time f = open("E:/test.txt","w",encoding="UTF-8") #write写入.此时会在e盘中创建这个一个叫test的txt,但是此时txt中还不会有内容,需要flush以后才会写进去 f.write("Hello World!!!")#此时只是将内容写入到了内存中,而不是内盘中 #flush刷新 f.flush() #将内存中积攒的内容,写入到硬盘的文件中
close功能可以直接内置flush功能,注释掉flush行内容,删除已经生成的文件,执行上面代码,依旧会生成一个test.txt文件
""" 演示文档的写入 """ #打开文件,不存在的文件,用w模式进行写文件 import time f = open("E:/test.txt","w",encoding="UTF-8") #write写入.此时会在e盘中创建这个一个叫test的txt,但是此时txt中还不会有内容,需要flush以后才会写进去 f.write("Hello World!!!")#此时只是将内容写入到了内存中,而不是内盘中 #flush刷新 # f.flush() #将内存中积攒的内容,写入到硬盘的文件中 #close关闭,用close关闭文件 f.close() #close方法是内置了flush的功能的,也就是上面flush可以不用写
#打开一个已经存在的文件 f= open("E:/test.txt","w",encoding="UTF-8") #Write写入,flush刷新 f.write("计算机") #close f.close()
W模式的两种属性:
1.文件不存在的时候,会将文件创建出来 2.文件存在的时候,再写入新的内容,会将老的内容覆盖替换换位为新的内容
总结:
04-文件的追加操作
""" 演示问价内动追加写入 """ #以下内容用于创建一个写入计算机内容的txt文件 #打开文件,不存在的文件 f = open("D:/test.txt","a",encoding="UTF-8") #write写入 f.write("计算机") #flush刷新 f.flush() #close关闭 f.close()
#打开一个存在的文件 f = open("E:/test.txt","a",encoding="UTF-8") #write写入,flush刷新 f.write("k考研别问为什么") #close关闭 f.close()
很明显,内容已经追加上去了。
若要加入的内容和原来内容不在同一行的话,可以加上\n
#打开一个存在的文件 f = open("E:/test.txt","a",encoding="UTF-8") #write写入,flush刷新 f.write("\n考研别问为什么") #close关闭 f.close()
总结
05-文件操作的综合案例
需求:有一份账单文件,记录了消费收入的具体记录,内容如下
name,dato,money,type,somarks 周杰轮,2022-01-01,100000,消费,正式 周杰轮,2022-01-02,300000,收入,正式 周杰轮,2022-01-03,100000,消费,测试 林俊节,2022-01-01,300000,收入,正式 林俊节,2022-01-02,100000,消费,测试 林俊节,2022-01-03,100000,消费,正式 林俊节,2022-01-04,100000,消费,测试 林俊节,2022-01-05,500000,收入,正式 张学油,2022-01-01,100000,消费,正式 张学油,2022-01-02,500000,收入,正式 张学油,2022-01-03,900000,收入,测试 王力鸿,2022-01-01,500000,消费,正式 王力湖,2022-01-02,300000,消费,测试 王力满,2022-01-03,950000,收入,正式 刘德滑,2022-01-01,300000,消费,测试 刘德滑,2022-01-02,100000,消费,正式 刘德滑,2022-01-03,300000,消费,正式
同学们可以将内容复制并保存为 bill.txt文件
""" 演示文件操作综合案例:文件备份 """ #打开文件得到文件对象,准备读取 fr =open("E:/bill.txt","r",encoding="UTF-8")#打开在E盘中已经存在的文件,用r #打开文件得到文件对象,准备写入 fw =open("E:/bill.txt.bak","w",encoding="UTF-8")#将文件写入到d盘中,用w #for 循环读取文件 for line in fr: #循环读取文件里的内容,可以用逗号将内容分隔一下 #但是注意分隔以后,会有一个换行符,需要处理 line =line.strip() #将开头和结尾空格都处理掉,同时也处理掉换行符 if line.split(",")[4] =="测试" #通过逗号将文件内容分隔,选取列表中第4个元素 continue #continue进入下一次循环,这一次后面的内容就不会在执行了 #判断内容,将满足的内容写出 fw.write(line) #由于前面对内容进行了strip()的操作,所以要手动的写出换行符 fw.write("\n") #close2个文件对象 fr.close() fw.close() #x写出文件调用close()会自动flush()