第一阶段-第八章 Python的文件操作


  说明:该文章是学习 黑马程序员在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()

在这里插入图片描述在这里插入图片描述在这里插入图片描述
  然后,双击记事本打开。
在这里插入图片描述
在这里插入图片描述
  好了,本章的笔记到此结束,谢谢大家阅读。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知乎云烟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值