目录
- 一、文件的编码
- 1.学习目标
- 2.文件编码
- 3.查看文件编码
- 4.本小节的总结
- 二、文件的读取
- 1.学习目标
- 2.什么是文件
- 3.文件包含的操作(打开、关闭、读、写)
- 4.文件的操作步骤(打开或创建文件open(mode常用的三种基础访问模式)、读文件read与readlines与readline与for循环读取、关闭文件close、with open语法)
- 5.本节的代码演示
- 6.本小节的总结
- 7. 课后练习:单词计数
- 三、文件的写入
- 1. 写操作快速入门(write、flush)
- 2.本节的代码演示
- 3.本小节的总结
- 四、文件的追加
- 1. 追加写入操作快速入门
- 2.本节的代码演示
- 3.本小节的总结
- 五、文件操作综合案例
- 1.学习目标
- 2.需求分析
- 3.本节的代码演示
说明:该文章是学习 黑马程序员在B站上分享的视频 黑马程序员python教程,8天python从入门到精通而记录的笔记,笔记来源于本人。 若有侵权,请联系本人删除。笔记难免可能出现错误或笔误,若读者发现笔记有错误,欢迎在评论里批评指正。此笔记对应的doc文件的百度网盘下载链接为 Python入门(黑马)的学习笔记,提取码:1b3k。
一、文件的编码
1.学习目标
掌握文件编码的概念和常见编码。
2.文件编码
3.查看文件编码
4.本小节的总结
二、文件的读取
1.学习目标
了解文件操作的作用;掌握文件的打开、读取、关闭操作。
2.什么是文件
3.文件包含的操作(打开、关闭、读、写)
4.文件的操作步骤(打开或创建文件open(mode常用的三种基础访问模式)、读文件read与readlines与readline与for循环读取、关闭文件close、with open语法)
注:如果说你连续调用了多次read(或readlines或readline)的话,那么第一次read(或readlines或readline)读取的结尾,程序会进行记录。当下一次继续调用时,它会从上一次读到地方继续去读。
5.本节的代码演示
先打开软件,创建一个名为“08_Python的文件操作”的文件夹,并创建一个名为“01_文件的读取”的py文件。
如下几张图所示,先打开一个文件夹目录,然后做一个txt文件,以便后面读取文件的使用。
编写代码并运行。代码如下,可参考注释进行理解。从中学会read的使用。
"""
演示对文件的读取
"""
# 打开文件
f = open("D:/test/测试.txt", "r", encoding="UTF-8") # 由于encoding并不是函数的第三位,只能使用关键字传参
print(type(f))
# 读取文件-read
print(f"读取10个字节的结果:{f.read(10)}")
print(f"read方法读取全部内容的结果是:{f.read()}")
print("---------------------------------------")
"""
注:
如果说你连续调用了多次read的话,那么第一次read读取的结尾,程序会进行记录。当下一次继续调用时,它会从上一次读到地方继续去读。
"""
如下重新编写代码并运行(使用快捷键Ctr+/可快速注释),从中学会readlines的使用。
"""
演示对文件的读取
"""
# 打开文件
f = open("D:/test/测试.txt", "r", encoding="UTF-8") # 由于encoding并不是函数的第三位,只能使用关键字传参
print(type(f))
# # 读取文件-read
# print(f"读取10个字节的结果:{f.read(10)}")
# print(f"read方法读取全部内容的结果是:{f.read()}")
# print("---------------------------------------")
"""
注:
如果说你连续调用了多次read的话,那么第一次read读取的结尾,程序会进行记录。当下一次继续调用时,它会从上一次读到地方继续去读。
"""
# 读取文件 - readLines()
lines = f.readlines() # 读取文件的全部行,封装到列表中
print(f"Lines对象的类型:{type(lines)}")
print(f"lines对象的内容是:{lines}")
如下重新编写代码并运行(使用快捷键Ctr+/可快速注释),从中学会readline的使用。
"""
演示对文件的读取
"""
# 打开文件
f = open("D:/test/测试.txt", "r", encoding="UTF-8") # 由于encoding并不是函数的第三位,只能使用关键字传参
print(type(f))
# # 读取文件-read
# print(f"读取10个字节的结果:{f.read(10)}")
# print(f"read方法读取全部内容的结果是:{f.read()}")
# print("---------------------------------------")
"""
注:
如果说你连续调用了多次read的话,那么第一次read读取的结尾,程序会进行记录。当下一次继续调用时,它会从上一次读到地方继续去读。
"""
# # 读取文件 - readLines()
# lines = f.readlines() # 读取文件的全部行,封装到列表中
# print(f"Lines对象的类型:{type(lines)}")
# print(f"lines对象的内容是:{lines}")
# 读取文件 - readline()
line1 = f.readline()
line2 = f.readline()
line3 = f.readline()
print(f"第一行数据是:{line1}")
print(f"第二行数据是:{line2}")
print(f"第三行数据是:{line3}")
如下重新编写代码并运行(使用快捷键Ctr+/可快速注释),从中学会for循环按行读取文件的使用。
"""
演示对文件的读取
"""
# 打开文件
f = open("D:/test/测试.txt", "r", encoding="UTF-8") # 由于encoding并不是函数的第三位,只能使用关键字传参
print(type(f))
# # 读取文件-read
# print(f"读取10个字节的结果:{f.read(10)}")
# print(f"read方法读取全部内容的结果是:{f.read()}")
# print("---------------------------------------")
"""
注:
如果说你连续调用了多次read的话,那么第一次read读取的结尾,程序会进行记录。当下一次继续调用时,它会从上一次读到地方继续去读。
"""
# # 读取文件 - readLines()
# lines = f.readlines() # 读取文件的全部行,封装到列表中
# print(f"Lines对象的类型:{type(lines)}")
# print(f"lines对象的内容是:{lines}")
# # 读取文件 - readline()
# line1 = f.readline()
# line2 = f.readline()
# line3 = f.readline()
# print(f"第一行数据是:{line1}")
# print(f"第二行数据是:{line2}")
# print(f"第三行数据是:{line3}")
# for循环读取文件行
for line in f:
print(f"每一行数据是:{line}")
如下重新编写代码并运行(使用快捷键Ctr+/可快速注释),从中学会close关闭文件以及使用with open语法保证操作完后自动关闭文件。
"""
演示对文件的读取
"""
# 打开文件
f = open("D:/test/测试.txt", "r", encoding="UTF-8") # 由于encoding并不是函数的第三位,只能使用关键字传参
print(type(f))
# # 读取文件-read
# print(f"读取10个字节的结果:{f.read(10)}")
# print(f"read方法读取全部内容的结果是:{f.read()}")
# print("---------------------------------------")
"""
注:
如果说你连续调用了多次read的话,那么第一次read读取的结尾,程序会进行记录。当下一次继续调用时,它会从上一次读到地方继续去读。
"""
# # 读取文件 - readLines()
# lines = f.readlines() # 读取文件的全部行,封装到列表中
# print(f"Lines对象的类型:{type(lines)}")
# print(f"lines对象的内容是:{lines}")
# # 读取文件 - readline()
# line1 = f.readline()
# line2 = f.readline()
# line3 = f.readline()
# print(f"第一行数据是:{line1}")
# print(f"第二行数据是:{line2}")
# print(f"第三行数据是:{line3}")
# # for循环读取文件行
# for line in f:
# print(f"每一行数据是:{line}")
# 文件的关闭
f.close()
# with open语法操作文件 在操作完成后自动关闭文件
with open("D:/test/测试.txt", "r", encoding="UTF-8") as f:
for line in f:
print(f"每一行数据是:{line}")
6.本小节的总结
7. 课后练习:单词计数
有两种思路,如下图所示。
如下几张图所示,先打开一个文件夹目录,然后做一个txt文件,以便练习使用。
进行代码的演示(为了便于管理文件,先将本节之前的代码文件改成“01_1_文件的读取”):
创建一个名为“01_2_文件读取的课后练习”的py文件。
编写代码并运行,可以看到方式1的效果。代码如下,可参考注释进行理解。
"""
演示读取文件,课后练习题
"""
# 打开文件,以读取模式打开
f = open("D:/test/word.txt", "r", encoding="UTF-8")
# 方式1:读取全部内容,通过字符串count方法统计itheima单词数量
content = f.read()
count = content.count("itheima")
print(f"itheima在文件中出现了:{count}次")
# 关闭文件
f.close()
如下重新编写代码并运行(使用快捷键Ctr+/可快速注释),可以看到方式2的效果。
"""
演示读取文件,课后练习题
"""
# 打开文件,以读取模式打开
f = open("D:/test/word.txt", "r", encoding="UTF-8")
# # 方式1:读取全部内容,通过字符串count方法统计itheima单词数量
# content = f.read()
# count = content.count("itheima")
# print(f"itheima在文件中出现了:{count}次")
# 方式2:读取内容,一行一行读取
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()
三、文件的写入
1. 写操作快速入门(write、flush)
2.本节的代码演示
先打开软件,创建一个名为“02_文件的写入”的py文件。
编写代码并运行。代码如下,可参考注释进行理解。
"""
演示文件的写入
"""
# 打开文件,不存在的文件,P,W,.
f = open("D:/test/test.txt", "w", encoding="UTF-8")
# write写入
f.write("Hello World!!!") # 内容写入到内存中
# flush刷新
f.flush() # 将内存中积攒的内容,写入到硬盘的文件中
# close关闭
f.close() # 其实,close方法内置了flush的功能
如下重新编写代码并运行(使用快捷键Ctr+/可快速注释),可以看到w的写入效果,它会清空文件里的内容,重新写入新内容。
"""
演示文件的写入
"""
# 打开文件,不存在的文件,P,W,.
f = open("D:/test/test.txt", "w", encoding="UTF-8")
# write写入
f.write("Hello World!!!") # 内容写入到内存中
# flush刷新
f.flush() # 将内存中积攒的内容,写入到硬盘的文件中
# close关闭
f.close() # 其实,close方法内置了flush的功能
# 打开一个存在的文件
f = open("D:/test/test.txt", "w", encoding="UTF-8")
# write写入
f.write("黑马程序员")
# close关闭 close自带flush刷新
f.close()
3.本小节的总结
四、文件的追加
1. 追加写入操作快速入门
2.本节的代码演示
先打开软件,创建一个名为“03_文件的追加写入”的py文件。
删除演示时需要操作的“test.txt”文件。
编写代码并运行。代码如下,可参考注释进行理解。可以发现,追加模式下,如果文件不存在,它会创建文件并写入。
"""
演示文件的追加写入
"""
# 打开不存在的文件
f = open("D:/test.txt", "a", encoding="UTF-8")
# write写入
f.write("黑马程序员")
# flush刷新
f.flush()
# close关闭
f.close()
如下重新编写代码并运行(使用快捷键Ctr+/可快速注释),可以看到a的追加写入效果,它会在文件原有内容的基础上加入需要添加的内容。
"""
演示文件的追加写入
"""
# # 打开不存在的文件
# f = open("D:/test/test.txt", "a", encoding="UTF-8")
# # write写入
# f.write("黑马程序员")
# # flush刷新
# f.flush()
# # close关闭
# f.close()
# 打开存在的文件
f = open("D:/test/test.txt", "a", encoding="UTF-8")
# write写入、flush刷新
f.write("学Python最佳选择")
# close.关闭
f.close()
3.本小节的总结
五、文件操作综合案例
1.学习目标
完成文件备份案例。
2.需求分析
3.本节的代码演示
如下几张图所示,先打开一个文件夹目录,然后做一个名为bill的txt文件,以便本次演示使用。
(在运行代码时出了点小问题,发现起初这一步忘操作了,如选图所示)然后,将所有逗号均改成英文逗号。
先打开软件,创建一个名为“04_文件操作的综合案例”的py文件。
编写代码并运行。代码如下,可参考注释进行理解。
"""
演示文件操作综合案例:文件备份
"""
# 打开文件得到文件对象,准备读取
fr = open("D:/test/bill.txt", "r", encoding="UTF-8")
# 打开文件得到文件对象,准备写入
fw = open("D:/test/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")
# close2个文件对象
fr.close()
fw.close() # 写出文件调用close()会自动flush()
然后,双击记事本打开。
好了,本章的笔记到此结束,谢谢大家阅读。