1.文件的编码
思考:计算机只能识别:0和1,那么我们丰富的文本文件是如何被计算机识别,并存储在硬盘中呢?
答案:使用编码技术(密码本)将内容翻译成0和1存入。
计算机只认识0和1,所以需要将内容翻译成0和1才能保存在计算机中,同时也需要编码,将计算机保存的0和1,反向翻译回可以识别的内容
不同的编码,将内容翻译成二进制也是不同的。
编码就是一种规则集合,记录了内容和二进制间进行相互转换的逻辑
当我们记录文件时使用的什么编码,打开也同样使用什么编码去打开
看到的右下角的就是我的文件所使用的编码,大家也可以自行打开window系统中的记事本看看
随着时代变迁,许多编码被淘汰掉。你可以认为UTF—8将是一个通用编码,基本上现在99%都是使用它,还有GBK是在最早以前我们中文体系里面经常使用,Big5是繁体字用的比较多
2.文件的读取
test.py是我前几节课讲过的一个代码,用来给大家做示范
encoding并不是位于第三位,所以对于encoding要使用关键字传参,而不是位置传参
<class '_io.TextIOWrapper'>表示的就是对文本文件进行io操作功能的一个类,text就是表示文本
刚刚好读取了10个字节
注意当你使用了一次read之后,文件会记录你读取到哪里,下次会从上一次读到的地方继续读取,就是在上一个read的结尾处读取
注意:只要你打开文件读取一部分后,后面不管调用什么方法,它都会续接上一次读取文件的方法
readlines和read是不同的方法,但是我们都来自同一个文件对象,所以他也会续接上一个read所读取的结尾去接着去读
readlines读取到的\n其实就是每一行的换行符
read:读取指定字节或读取全部内容
readlines:读取全部行,封装到列表里面
每读取一次就读取一行,第二次读取就意味着读取到第二行
被占用时,无法对文件执行修改、重命名等操作
time.sleep(50000)这个代码的意思是让文件睡眠50000秒
但是:
f,close()
time.sleep(50000)
这样就代表你先关闭了文件,然后在让他睡眠,就可以正常进行修改、重命名等操作
import time with open("D:/test.py","r",encoding="UTF-8") as f: for line in f: print(f"每一行数据是:{line}") time.sleep(3333333)
这个代码会自动执行close语句
文件对象有如下读取方法:
·read()
·readline()
`readlines()
`for line in 文件对象
读取完文件不要忘记close哦
小练习
思路
给大家分享了两种方法,仅供参考
f = open("D:/word.txt","r",encoding="UTF-8") count = 0 #使用count变量来累计itheima出现的次数 for line in f: line = line.strip() #去除开头和结尾的空格以及换行符 words = line.split(" ") for word in words: if word == "itheima": count += 1 #如果单词是itheima,进行数量的累加加1 print(f"itheima出现的次数是:{count}") f.close()
3.文件的写入
基本步骤:打开->读写->关闭
使用open打开文件时,如果文件不存在,w模式会自动创建一个文件
直接使用close也可以,close方法,内置了flush的功能,同样也能写入文件
当你使用w模式,open存在的文件,文件存在它会把内容清空,然后写我们想要的东西,文件不存在她会把文件创建出来
4.文件的追加
使用”\n“换行输入
a模式,文件不存在,会创建新文件
a模式,文件存在,会在原有内容后面继续写入
5.文件操作综合案例
name,date,money,type,remarks
周杰轮,2022-01-0,1100000,消费,正式
周杰轮,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,消费,正式
fr = open("D:/bill.txt","r",encoding="UTF-8") fw = open("D:/bill.txt.bak","w",encoding="UTF-8") for line in fr: line = line.strip() # strip函数去除两边的空格和换行符 if line.split(",")[-1] == "测试": continue #continue进入下一次循环,这一次后面的内容就跳过了 #将内容写出去 fw.write(line) #由于前面对内容进行了strip()的操作1,所以要手动的写出换行符 fw.write("\n") fr.close() fw.close()
大家注意使用分隔符split注意是中文逗号还是英文逗号
标签:文件,01,读取,python,2022,close,操作,line From: https://blog.csdn.net/2401_87332612/article/details/143027522