学Python的漫画漫步进阶 -- 第十二步.文件读写

news2025/1/13 7:57:22

学Python的漫画漫步进阶 -- 第十二步.文件读写

  • 十二、文件读写
    • 12.1 打开文件
    • 12.2 关闭文件
      • 12.2.1 在finally代码块中关闭文件
      • 12.2.2 在with as代码块中关闭文件
    • 12.3 读写文本文件
    • 12.4 动动手——复制文本文件
    • 12.5 读写二进制文件
    • 12.6 动动手——复制二进制文件
    • 12.7 练一练
    • 12.8 文件读写总结

十二、文件读写

在这里插入图片描述
文件是数据的载体,程序可以从文件中读取数据,也可以将数据写入文件中,本章重点介绍如何在Python中进行文件读写。

Python中文件读写有多种方式,可以使用内置函数
内置函数进行文件读写的基本思路是:

  1. 打开文件
  2. 开始“读”或者“写”的操作
  3. 关闭文件

内置函数包括:open()、read()、readline()、readlines()、write()、writelines()、close()等。

在这里插入图片描述

在这里插入图片描述

12.1 打开文件

我们在使用文件之前要先将文件打开,这通过open()函数实现。

open()函数的语法如下:

在这里插入图片描述
open()函数中的参数还有很多,这里介绍4个常用参数,这些参数的含义如下。

1.file参数

file参数用于表示要打开的文件,可以是字符串或整数。如果file是字符串,则表示文件名,文件名既可以是当前目录的相对路径,也可以是绝对路径;如果file是整数,则表示一个已经打开的文件。

2.mode参数

mode参数用于设置文件打开模式,用字符串表示,例如rb表示以只读模式打开二进制文件。用于设置文件打开模式的字符串中的每一个字符都表示不同的含义,对这些字符的具体说明如下。

t:以文本文件模式打开文件。

b:以二进制文件模式打开文件。

r:以只读模式打开文件。

在这里插入图片描述

w:以只写模式打开文件,不能读内容。如果文件不存在,则创建文件;如果文件存在,则覆盖文件的内容。

x:以独占创建模式打开文件,如果文件不存在,则创建并以写入模式打开;如果文件已存在,则引发FileExistsError异常。

a:以追加模式打开文件,不能读内容。如果文件不存在,则创建文件;如果文件存在,则在文件末尾追加。

+:以更新(读写)模式打开文件,必须与r、w或a组合使用,才能设置文件为读写模式。
这些字符可以进行组合,以表示不同类型的文件的打开模式,如下表所示。
在这里插入图片描述

3.encoding参数

encoding用来指定打开文件时的文件编码,默认是UTF-8编码,主要用于打开文本文件。

4.errors参数

errors参数用来指定在文本文件发生编码错误时如何处理。推荐errors参数的取值为’ignore’,表示在遇到编码错误时忽略该错误,程序会继续执行,不会退出。
示例代码如下:
在这里插入图片描述

通过Python指令运行文件,输出结果:

在这里插入图片描述
在这里插入图片描述

12.2 关闭文件

在打开文件后,如果不再使用该文件,则应该将其关闭,会用到close()方法。

12.2.1 在finally代码块中关闭文件

对文件的操作往往会抛出异常,为了保证对文件的操作无论是正常结束还异常结束,都能够关闭文件,我们应该将对close()方法的调用放在异常处理的finally代码块中。

在这里插入图片描述

示例代码如下:

在这里插入图片描述

通过Python指令运行文件,输出结果

在这里插入图片描述

12.2.2 在with as代码块中关闭文件

在这里插入图片描述

示例代码如下:

在这里插入图片描述
通过Python指令运行文件,输出结果:

在这里插入图片描述

with as提供了一个代码块,在as后面声明一个资源变量,在with as代码块结束之后自动释放资源。

12.3 读写文本文件

读写文本文件的相关方法如下。

read(size=-1):从文件中读取字符串,size限制读取的字符数,size=-1指对读取的字符数没有限制。

readline(size=-1):在读取到换行符或文件尾时返回单行字符串。如果已经到文件尾,则返回一个空字符串。size是限制读取的字符数,size=-1表示没有限制。

readlines():读取文件数据到一个字符串列表中,每一行数据都是列表的一个元素。

write(s):将字符串s写入文件中,并返回写入的字符数。

writelines(lines):向文件中写入一个字符串列表。不添加行分隔符,因此通常为每一行末尾都提供行分隔符。

flush():刷新写缓冲区,在文件没有关闭的情况下将数据写入文件中。

12.4 动动手——复制文本文件

下面给出一个文本文件复制示例:

在这里插入图片描述

在这里插入图片描述
示例代码如下:

在这里插入图片描述

12.5 读写二进制文件

二进制文件的读写单位是字节,不需要考虑编码问题。二进制文件的主要读写方法如下。

read(size=-1):从文件中读取字节,size限制读取的字节数,如果size=-1,则读取全部字节。

readline(size=-1):从文件中读取并返回一行。size是限制读取的行数,如果size=-1,则没有限制。

readlines():读取文件数据到一个字节列表中,每一行数据都是列表的一个元素。

在这里插入图片描述
write(b):写入b字节,并返回写入的字节数。
writelines(lines):向文件中写入一个字节列表。不添加行分隔符,因此通常为每一行末尾都提供行分隔符。

flush():刷新写缓冲区,在文件没有关闭的情况下将数据写入文件中。

12.6 动动手——复制二进制文件

下面给出一个文件复制示例:

在这里插入图片描述
在这里插入图片描述

12.7 练一练

1 请简述打开文件函数open()中几个常用参数的意义。

2 判断对错:(请在括号内打√或×,√表示正确,×表示错误)。

1)若文件打开模式为r+,则表示以只读模式打开文本文件,如果文件不存在,则抛出异常。()

2)文件读取方法readline()会一次性读取文件中的所有数据。()

3)文本文件写入方法write(s)会将字符串s写入文件中。()

4)进行文件写入时可以不用flush()方法,只要文件正常关闭,则数据最终都被写入文件中。()

5)文件可以分为:二进制文件和文本文件。图片jpgJPG图片文件属性二进制文件,而Word属于文本文件。()

6)打开二进制文件时需要指定编码集。()

7)打开文件后,如果不再使用该文件,则应该关闭该文件。关闭文件的过程可以在finally代码块中完成,也可以在with as代码块中实现完成。()

8)with as代码块,可自动释放资源(包括关闭文件的操作),它可以替代finally代码块,优化代码结构,并提高其可读性。()

12.8 文件读写总结

Python提供了多种文件读写方式,以下是文件读写的一些常见总结:

  1. 打开文件:使用open()函数打开文件,指定文件名和文件操作模式。例如,打开一个名为“example.txt”的文本文件,可以使用以下代码:
file = open("example.txt", "r")
  1. 读取文件:使用read()函数读取文件内容。例如,读取“example.txt”文件中的内容,可以使用以下代码:
content = file.read()
print(content)
  1. 逐行读取文件:使用readline()函数逐行读取文件内容。例如,逐行读取“example.txt”文件中的内容,可以使用以下代码:
line = file.readline()
while line:
    print(line)
    line = file.readline()
  1. 写入文件:使用write()函数将数据写入文件中。例如,向“example.txt”文件中写入一行文本,可以使用以下代码:
file = open("example.txt", "w")
file.write("Hello, world!")
file.close()
  1. 追加文件:使用a模式打开文件,将数据追加到文件末尾。例如,向“example.txt”文件末尾追加一行文本,可以使用以下代码:
file = open("example.txt", "a")
file.write("Hello, world!")
file.close()
  1. 关闭文件:使用close()函数关闭文件。例如,关闭“example.txt”文件,可以使用以下代码:
file.close()
  1. with语句:使用with语句可以自动关闭文件。例如,使用with语句打开“example.txt”文件,可以使用以下代码:
with open("example.txt", "r") as file:
    content = file.read()
    print(content)

以上是Python文件读写的一些常见总结,需要注意的是,在读写文件时应该遵循文件操作的基本规则,避免对文件造成不必要的损害。

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

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

相关文章

Redis之list类型

文章目录 Redis之list类型1. 列表添加/弹出元素2. 查看列表3. 获取列表中元素的个数4. 删除列表中指定的值5. 获取/指定元素的值6. 向列表中插入元素7. 删除指定索引范围之外的所有元素8. 将元素从一个列表转移到另一个列表9. 应用场景9.1 队列9.2 类似微信上订阅公众号&#x…

MidJourneyAI绘画之月满中秋情更浓

皓月当空照人间, 银河洒满天幕间。 嫦娥轻舞婵娟态, 桂香飘散诗意添。 团圆乐享如意时, 家人相聚笑声吹。 中秋欢庆如诗意, 祝福平安好运气。

从网约车平台合规问题看企业合规难题如何破解

随着互联网的快速发展,网约车行业逐渐崛起并成为人们出行的重要选择之一。然而,虽然网约车平台带来了便利和效率,但也引发了一系列合规问题。 近日,西安市交通运输综合执法支队和西安市出租汽车管理处组织开展了西安市网约车行业…

Leetcode 95. 不同的二叉搜索树 II

文章目录 题目代码&#xff08;9.21 首刷看解析&#xff09; 题目 Leetcode 95. 不同的二叉搜索树 II 代码&#xff08;9.21 首刷看解析&#xff09; class Solution { public:vector<TreeNode*> generateTrees(int n) {return build(1,n);}vector<TreeNode*> bu…

singularity docker 拉取镜像 seurat和scapy spatial空转数据转换 cell2location

JiekaiLab/scDIOR: scDIOR: Single cell data IO softwaRe (github.com) module availablemodule load singularitysingularity pull docker://jiekailab/scdior-image:Seuratv4_Scanpy1.8 export PATH/seu_share/apps/singularity/bin/singularity:$PATH

C++数据结构题:DS 顺序表--连续操作

建立顺序表的类&#xff0c;属性包括&#xff1a;数组、实际长度、最大长度&#xff08;设定为 1000 &#xff09; 该类具有以下成员函数&#xff1a; 构造函数&#xff1a;实现顺序表的初始化。 插入多个数据的 multiinsert(int i, int n, int item[]) 函数&#xff0c;实…

vue 脚手架 入门 记录

vue 脚手架 入门 记录 以管理员身份运行PowerShell执行&#xff1a;get-ExecutionPolicy&#xff0c;回复Restricted&#xff0c;表示状态是禁止的 3.执行&#xff1a;set-ExecutionPolicy RemoteSigned 4.选择Y 注意&#xff1a;一定要以管理员的身份运行PowerShell&#xff…

Verilog功能模块——标准FIFO转FWFT FIFO

前言 在使用FIFO IP核时&#xff0c;我更喜欢使用FWFT(First Word First Through) FIFO而非标准FIFO&#xff0c;FWFT FIFO的数据会预先加载到dout端口&#xff0c;当empty为低时数据就已经有效了&#xff0c;而rd_en信号是指示此FIFO更新下一个数据&#xff0c;这种FWFT FIFO的…

【Linux基础】第30讲 Linux用户和用户组权限控制命令(二)

1&#xff09;sudo命令 sudo是Linux系统管理指令&#xff0c;是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具&#xff0c;如halt,reboot,su等等&#xff0c;这样不仅减少了root用户的登录和管理时间&#xff0c;同样也提高了安全性。 2&#xff09;修改配置…

Grafana设置默认主页

点击【设置/管理】-> 【默认首选项 Preferences】-> 【主页仪表盘】 在下拉中选择一个页面作为主页即可

山西电力市场日前价格预测【2023-09-22】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-09-22&#xff09;山西电力市场全天平均日前电价为322.75元/MWh。其中&#xff0c;最高日前电价为386.53元/MWh&#xff0c;预计出现在06: 45。最低日前电价为237.40元/MWh&#xff0c;预计…

Java高级-动态代理

动态代理 1.介绍2.案例 1.介绍 public interface Star {String sing(String name);void dance(); }public class BigStar implements Star{private String name;public BigStar(String name) {this.name name;}public String sing(String name) {System.out.println(this.name…

一个不怎么成功的三级菜单

三级菜单制作&#xff0c;菜单焦点总是消失&#xff0c;等发现好的再写一篇 发现 ​ 父元素设置了display:flex时&#xff0c;子元素中的display:none或者display:block就会失效。这是因为display:flex的优先级高于display:none和display:block&#xff0c;使他们的作用失效了。…

Map<K,V>的使用和List学习

Map Map是一种专门用来进行搜索的容器或者数据结构&#xff0c;其搜索的效率与其具体的实例化子类有关。对于静态类型的查找来说&#xff0c;一般直接遍历或者用二分查找【不会对区间进行插入和删除操作】 而在现实生活中的查找比如&#xff1a; 根据姓名查询考试成绩通讯录…

RISC-V Reader 笔记(七)RV64,特权架构,未来可选扩展

RV64 比起 RV32&#xff0c;其实扩展不多。 主要是添加了一系列字&#xff0c;双字为单位的操作。 各个 ISA 32 64比较 x86&#xff1a;变量都存在寄存器里&#xff0c;不像 32 存在内存里&#xff0c;因此指令数少很多&#xff0c;但是因此添加了很多新操作码来操作更多的寄…

ctfshow web入门(2)

web11 打开这个网站&#xff0c;到网站诊断分析模块 搜索域名 web12 提示 有时候网站上的公开信息&#xff0c;就是管理员常用密码 打开&#xff0c;就是个购物网站 因为昨天刚做robots.txt 我就搜了一下 真的有&#xff0c;提示admin这个页面 访问一下&#xff0c;userna…

PTE阅读写作讲解

目录 FIB-R和FIB-R想要拿到65分以上的正确率要达到百分之75以上 1.通过因果关系猜词 2.通过同义词和反义词的关系猜词 3.通过定义或释义关系来推测词义 WE 只需要背一个万能模版就可以了&#xff08;160&#xff09; 只需要保证语法正确就可以了 文本中的实词不能出现第…

阿里云视频点播服务视频地址浏览器打开失效问题记录

我这边的视频都是存储到阿里云视频点播服务中,访问方式都是移动端通过api接口访问视频.现在需要从浏览器直接访问,上传视频成功之后,可以正常打开,但是过段时间地址就显示无法访问,具体显示内容为: 很明显,是视频地址失效了,以下是处理方式: 1.修改视频关联的存储桶读取权限,修…

1334. 阈值距离内邻居最少的城市

1334. 阈值距离内邻居最少的城市 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a;DijkstraDijkstra_小顶堆Floyd_martix方法 原题链接&#xff1a; 1334. 阈值距离内邻居最少的城市 https://leetcode.cn/problems/find-the-city-with-th…

排序算法的奥秘:JAVA中的揭秘与实现

冒泡排序(Bubble Sort)是一种简单的排序算法&#xff0c;它通过多次迭代比较和交换相邻的元素来排序一个数组。每次迭代&#xff0c;较大的元素会逐渐"冒泡"到数组的末尾。以下是Java中实现冒泡排序的示例代码&#xff1a; public class BubbleSort { public sta…