"""
演示文件的读取
"""
#打开文件
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()
如何调用方法把内容写入到文件中?
"""
演示文档的写入
"""
#打开文件,不存在的文件,用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()
1.文件不存在的时候,会将文件创建出来 2.文件存在的时候,再写入新的内容,会将老的内容覆盖替换换位为新的内容
"""
演示问价内动追加写入
"""
#以下内容用于创建一个写入计算机内容的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()
需求:有一份账单文件,记录了消费收入的具体记录,内容如下
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()