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

news2024/12/25 0:44:46

目录

  • 一、文件的编码
    •   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()

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/754612.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机视觉 | 目标检测 | 图像分割】arxiv 计算机视觉关于目标检测和图像分割的学术速递(7 月 14 日论文合集)

文章目录 一、检测相关(6篇)1.1 LVLane: Deep Learning for Lane Detection and Classification in Challenging Conditions1.2 Garbage in, garbage out: Zero-shot detection of crime using Large Language Models1.3 Robotic surface exploration with vision and tactile …

汽车电子 -- 使用CANdb++ Editor创建并制作一个DBC

参看:关于DBC文件的创建(DBC文件系列其一) 一、什么是DBC DBC文件是DataBase Container文件的缩写。 CAN数据库文件也称为后缀为(.dbc)的文件。DBC文件是基本的文本文件,其中包括将原始CAN总线数据解码为…

Raft算法之日志复制

Raft算法之日志复制 一、日志复制大致流程 在Leader选举过程中,集群最终会选举出一个Leader节点,而集群中剩余的其他节点将会成为Follower节点。Leader节点除了向Follower节点发送心跳消息,还会处理客户端的请求,并将客户端的更…

音频播放器Web页面代码实例(基于HTML5)

音频播放器Web页面代码实例&#xff08;基于HTML5&#xff09;&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><…

C/C++自定义类型(详解struct,enum,union)

目录 一&#xff0c;struct 1&#xff09;结构及一般使用方法 2&#xff09;无名结构体 3&#xff09;巧用typedef 4)struct小细节 5&#xff09;补充内存对齐&#xff08;提高程序可移植性&#xff0c;提高运行效率&#xff09; 二&#xff0c;enum 1)结构及一般使用方…

H3C-Cloud Lab实验-RIP实验

实验拓扑图&#xff1a; 实验需求&#xff1a; 1. 按照图示配置 IP 地址 2. 配置 RIP 实现全网路由互通 3. 路由器之间需要开启接口身份验证来保证协议安全性&#xff0c;密钥为 123456 实验步骤&#xff1a; 1. 配置R1的IP地址 2. 配置R2的IP地址 3. 配置R3的IP地址 4. 在…

【解决】Android Studio打包出现not found for signing config ‘externalOverride‘

问题出现场景 之前我的这个项目在另一台电脑上开发&#xff0c;现在迁移到这台计算机上&#xff0c;出现了key报错的问题&#xff0c;网络上有些说需要在XML中进行配置signature相关的内容&#xff0c;这个感觉比较复杂&#xff0c;本文主要介绍一个简单的解决方法&#xff0c;…

半同步半反应堆线程池(三)

本章讲解线程池所涉及的基础知识&#xff0c;包括服务器基本框架、I/O模型、事件处理模式等。 主要围绕服务器项目中涉及的知识进行介绍&#xff0c;若想了解更多相关知识&#xff0c;请参考《Linux下高性能服务器编程》。 1.服务器编程基本框架 主要由I/O单元&#xff0c;逻…

【分布式任务调度】XXL-JOB执行器配置及定时任务的创建(二)

文章目录 1. 前言2. 调度器配置2.1.依赖及配置2.2.任务实例2.3.调度中心管理配置 3. 总结 1. 前言 在上一篇《XXL-JOB调度中心集群部署配置》 中&#xff0c;我们已经得到了一个调度中心的集群&#xff0c;接下来需要了解如何配置调度器及创建定时任务。 本文的主要内容包括&a…

MySQL的登录与退出(图文详解)

目录 一、服务的启动 1、方式1&#xff1a;使用图形界面工具启动 方式2&#xff1a;使用命令行工具启动 二、服务的停止 方式1&#xff1a;使用图形界面工具停止 方式2&#xff1a;使用命令行工具停止 二、自带客户端的登录与退出 登录方式1&#xff1a;MySQL自带客户端 …

详解 ➾【FTP服务工作原理及连接模式】

详解 ➾【FTP服务工作原理及连接模式】 &#x1f53b; 前言&#x1f53b; 一、FTP服务简介&#x1f6a5; 1.1 FTP工作原理&#x1f6a5; 1.2 匿名用户访问的产生&#x1f6a5; 1.3 FTP服务的连接模式&#x1f6a5; 1.4 几种流行的FTP服务器软件 &#x1f53b; 总结—温故知新 &…

toastr js clear 不成功的一个原因和解决办法

在系统里使用了 toastr js 即时弹出后台通知。toastr 支持先后显示多个弹出消息,这点很好。然后我又加了自定义样式,使得消息通知更好看些。 我的想法是通知消息显示一段时间后关闭;也可点击关闭按钮,关闭通知并标记已读;或者点击通知消息中的链接查看通知相关的内容,同时…

Python面向对象学习整理(一)

一、面向对象中的几点概念 1.1 什么是类&#xff1f; 类&#xff1a;用户定义的对象原型&#xff08;prototype&#xff09;&#xff0c;该原型定义了一组可描述该类任何对象的属性&#xff0c;属性是数据成员&#xff08;类变量 和 实例变量&#xff09;和方法&#xff0c;可…

(简单)剑指Offer 21. 调整数组顺序使奇数位于偶数前面 Java

记数组nums的长度为n。从先nums左侧开始遍历&#xff0c;如果遇到的是奇数&#xff0c;就表示这个元素已经调整完成&#xff0c;继续从左往右遍历&#xff0c;直到遇到一个偶数。然后从nums右侧开始遍历&#xff0c;如果遇到的是偶数&#xff0c;就表示这个元素已经调整完成了&…

arcgis拓扑检查

不能有悬挂点 不能有伪结点***路网处理很重要&#xff0c;看研究吧。 一直默认到最后。 导入要素类&#xff0c;单个 toupu2右键新建拓扑&#xff08;T&#xff09; 一般选不能有悬挂点&#xff0c;不能重叠。 一路默认 是 拉进图层可视化 线要素的话记得添加字段length&#…

Redis数据结构 — Dict

目录 Dict结构设计 — rehash rehash触发机制 Dict扩容 Dict收缩 ​编辑渐进式 rehash 哈希表优点在于&#xff0c;它能以 O(1) 的复杂度快速查询数据。为解决哈希冲突&#xff0c;Redis 采用了「链式哈希」来解决哈希冲突&#xff0c;在不扩容哈希表的前提下&#xff0c;…

直播美颜SDK与智能美妆:技术融合的未来

对于许多直播主和观众来说&#xff0c;如何在直播中呈现最佳的外貌成为了一个重要问题。为了解决这个问题&#xff0c;直播美颜SDK与智能美妆技术的融合应运而生&#xff0c;为用户带来了前所未有的美妆体验。 简单来讲&#xff0c;直播美颜SDK可以理解为计算机视觉技术和人工…

WebDAV之π-Disk派盘 + Solid Explorer

Solid Explorer 支持WebDAV方式连接π-Disk派盘。 Solid Explorer 是一款非常优秀的 Android 文件管理器&#xff0c;Material Design 设计风格&#xff0c;双栏布局&#xff0c;可拖拽操作、支持 ROOT 权限、多媒体浏览器、压缩包支持&#xff0c;Chromecast 流支持等众多功…

AdsPower 的功能到底好不好用?一文详解,真实揭露

你一定听说过AdsPower、Multilogin、dolphin、vmlogin浏览器、紫鸟、悦互联等等这些常见的指纹浏览器软件吧&#xff01;其中&#xff0c;AdsPower浏览器作为一款跨境圈里的“明星指纹浏览器”&#xff0c;号称具备许多功能&#xff0c;这就让许多跨境人对这个浏览器充满好奇&a…

jdk11缺少jre的问题解决

问题&#xff1a;升级jdk的时候文件中缺少jre&#xff0c;导致项目启动报错 jdk11不在默认用户强制安装jre&#xff0c;所以jdk包中不在包含jre文件 解决步骤1&#xff1a;进入jdk安装包的根目录&#xff0c;输入cmd 解决步骤2&#xff1a;在cmd中输入以下命令 bin\jlink.e…