一、文件编码的概念
1. 什么是编码
编码是一种规则集合,记录了内容和二进制间进行相互转换的逻辑,编码有许多种,我们最常用的是UTF-8编码
2. 为什么需要使用编码
计算机只认识0和1,所以需要将内容翻译成0和1才能保存在计算机中,同时也需要编码,将计算机保存的0和1反向翻译回可以识别的内容。
二、文件的读取操作
1. 操作文件需要通过open函数打开文件得到文件对象
2. 文件对象有如下读取方法:
- read()
- readline()
- readines()
- for line in 文件对象
3. 文件读取完成后,要使用文件对象.close()方法关闭文件对象,否则文件会被一直占用
4. 文件的操作和功能汇总
文件对象 = open(file,mode,encoding) | 打开文件获得文件对象 |
文件对象.read(num) | 读取制定长度字节,不指定num读取文件全部 |
文件对象.readline() | 读取一行 |
文件对象.readlines() | 读取全部行,得到列表 |
for line in文件对象 | for循环文件行,一次循环得到一行数据 |
文件对象.close | 关闭文件对象 |
with open() as f | 通过with open语法打开文件,可以自动关闭 |
5. 练习:读取文件进行单词计数
#课后练习:统计nobug出现次数
#打开文件,以读取模式打开
f= open("C:\桌面\word.txt", "r", encoding="UTF-8")
#方式1:读取全部内容,通过字符串count方式统计nobug单词数量
content = f.read()
count = content.count("nobug")
print(f"nobug在文件中出现了:{count}次")
#方式2:读取内容,一行一行读取
count = 0 #使用count变量统计nobug出现的次数
for line in f:
line = line.strip() #去除字符串开头结尾的空格以及换行符
words = line.split()
print(words)
for word in words:
if word == "nobug":
count += 1
print(f"nobug在文件中出现了:{count}次")
#关闭文件
f.close()
三、文件的写入操作
1. 写入文件使用open函数的 "w" 模式进行写入
2. 写入的方法有
- write(),写入内容
- flush(),刷新内容到硬盘中
3. 注意事项
- w模式,文件不存在,会创建新文件
- w模式,文件存在,会清空原有内容
- close()方法,带有flush方法的功能
四、文件的追加写入操作
1. 追加写入文件使用open函数的 "a" 模式进行写入
2. 追加写入的方法有(和w模式一致)
- write(),写入内容
- flush(),刷新内容到硬盘中
3. 注意事项
- a模式,文件不存在,会创建新文件
- a模式,文件存在,会在原有内容后面继续写入
- 可以使用 "\n" 来写出换行符
五、文件操作的综合案例
题目:
代码:
#打开文件得到文件对象,准备读取
fr = open("D:/bill.txt", "r", encoding="UTF-8")
#打开文件得到文件对象,准备写入
fw = open("D:/bill.txt.bak", "w", encoding="UTF-8")
#for循环读取文件
for line in fr:
line = line.strip()
#判断内容,将满足的内容写出
if line.split(",")[4] == "测试":
continue #continue进入下一次循环,这一次后面的内容就跳过了
#将内容写出去
fw.write(line)
#由于前面对内容进行了strip()的操作,所以要手动的写出换行符
fw.write("\n")
#关闭2个文件对象
fr.close()
fw.close()