学Python的漫画漫步进阶 -- 第十二步

news2024/11/16 13:43:24

学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/1012445.html

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

相关文章

万物目标识别——Detic使用图像级别的监督信号来进行目标检测模型推理(C++/Python)

一、目标识别 1.1 传统目标识别算法 传统目标检测通常将分类(确定物体属于哪个类别)和定位(确定物体的位置,通常使用边界框bbox表示)任务耦合在一起。这要求训练数据集中包含每个物体的类别标签以及其对应的bbox位置…

【Proteus仿真】【STM32单片机】智能手环

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 系统运行后,OLED显示温度、心率、加速度极其阈值; 可按下K3键进入阈值设置模式,K1和K2调节对应阈值,K4确定;当检测体温、心率、加速度超出阈值范…

通讯协议介绍CoAP 协议解析

目录 1 通讯协议 2 TCP/IP 网络模型 2.1 TCP协议 2.1.1 TCP 连接过程 2.1.2 TCP 断开连接 2.1.3 TCP协议特点 2.2 UDP协议 2.2.1 UDP 协议特点 3 应用层协议简介 3.1 HTTP 协议 3.2 CoAP 协议 3.3 MQTT 协议 4 CoAP 协议详解 4.1 REST 风格 4.2 CoAP 首部分析 4…

网店怎么进行有效推广?可以试试软文推广

商家在为自己的网店制定推广方案时,不管是从渠道、手段、客户群体哪个方面出发都会面临挑战。传统推广方式成本过高,而宣传效果不一定明显,我们可以试试利用软文推广,成本较低而且推广效果明显。接下来媒介盒子就告诉大家&#xf…

四川玖璨电子商务有限公司:短视频运营理解

短视频运营是一种通过策划、执行和管理短视频内容以达到品牌目标的一项工作。在如今面临信息爆炸的时代,短视频已经成为了吸引用户注意力的一种重要方式。作为一种新兴媒体形式,短视频拥有跨时空、生动有趣、内容丰富的特点,因此得到了越来越…

智能遥测终端机RTU的好处介绍

智能遥测终端机RTU是一种具有高度智能化复合功能的遥测装置,它通过数据采集、通信传输和自动控制等技术,实现对被监测系统的远程监控、数据分析、故障诊断和远程控制。它在工业自动化领域的广泛应用,给自动化程度的提高、成本的下降和生产效率…

Linux 内存泄漏检测的基本原理

一、mtrace分析内存泄露 mtrace(memory trace),是 GNU Glibc 自带的内存问题检测工具,它可以用来协助定位内存泄露问题。 它的实现源码在glibc源码的malloc目录下,其基本设计原理为设计一个函数 void mtrace ()&…

开学季ipad手写笔哪款好?平价电容笔牌子排行

随着新学期的临近,随着Apple Pencil的火爆,出现了很多新款的平板电脑的电容笔,也开始在国内上市,有些是品质很高,有些是价位很实惠,而且大部分人都能接受。但是,也存在不少性价比很低的产品。本…

uniapp-video自定义视频封面

uniapp官方文档&#xff1a;video | uni-app官网uni-app,uniCloud,serverlesshttps://uniapp.dcloud.net.cn/uni-app-x/component/video.html#video 主要使用到的是poster属性&#xff0c;详细属性可点击上方api进行查看 <video id"myVideo" class"xwlogo&q…

Go基础语法:概述

概述 1 背景 产生原因 Go是Google开发的一种静态、强类型、编译型、并发型&#xff0c;并具有垃圾回收功能的类C编程语言。2009以开源项目的形式发布&#xff0c;2012年发布1.0稳定版本&#xff0c;距今已经十年了。 Go语言之父Pike提到&#xff1a;Go语言是以C为原型&…

Kubernetes源码阅读环境搭建

参考博文&#xff1a;Kubernetes 源码剖析-环境准备 安装Go语言 wget https://studygolang.com/dl/golang/go1.14.10.linux-amd64.tar.gz下载源代码 mkdir /goinstall创建一个存放go语言的编译器等组件存放的目录。 tar -zxf go1.14.10.linux-amd64.tar.gz -C /goinstall…

Vulhub靶场环境搭建

在Ubantu系统上搭建靶场环境 一、ubantu系统准备 1.更新安装列表 sudo apt-get update 2.安装docker.io sudo apt install docker.io 查看是否安装成功 docker -v 3.安装pip 检查pip是否安装 pip -V 安装pip apt install python3-pip 或者 apt install pip 再次检查pip…

Arcgis提取点数据经纬度

Arcgis提取点数据经纬度 现已打开tiff影像和采样点的shape文件。目标是提取采样点的经纬度信息然后导出。 打开数据管理工具-要素-添加XY坐标 在点的图层上右击打开属性表时&#xff0c;经纬度信息已经添加到属性表中。 在属性表的左上角中点击导出&#xff0c;导出为文本文…

SpringMVC之自定义注解

目录 一.什么是Java注解 1.简介 2.注解的分类 3.JDK元注解 二.自定义注解 1.自定义注解的分类 1.1.标记Annotation: 1.2.元数据Annotation: 2.如何使用自定义注解 3.案例演示 3.1 获取类、方法及属性上的注解值 3.2Inherited 的使用 3.3获取类属性上的注解属性值 3.…

模电课设:用Multisim设计和分析差分放大电路

1 课设内容 1&#xff09;设计一个差分放大器电路&#xff1b; 2&#xff09;用电流源替换发射极电阻&#xff0c;看看会发生什么&#xff1f; 3&#xff09;差分放大器电路特性之差模传输特性。 2 模型搭建 1&#xff09;设计一个差分放大器电路。 差分放大器电路是由对称…

day4_C++

day4_C 思维导图重载 思维导图 重载 #include <iostream> #include <cstring> using namespace std;class MyString { private:char *str;int size; public:MyString():size(10){str new char[size];strcpy(str,"");}MyString(const char *s){size st…

【案例】光电兼修的Alpha Cen,如何应对上升期的甜蜜烦恼?

Alpha Cen&#xff08;比邻星光&#xff09;是一家挺酷的公司&#xff0c;专注于超表面技术芯片研发。 所谓超表面芯片&#xff0c;就是通过控制类似下图的一个个独立纳米级别单元实现光操控。用微纳光学超表面技术能够平面化集成唯一还不在wafer上的光学器件&#xff0c;这意…

满载大模型技能干货的AI Day活动全新来袭

AI大模型时代&#xff0c;创造力才是第一生产力&#xff01; 满载大模型技能干货的AI Day主题活动全新来袭 丰富有趣的Workshop即将空降你的学校 帮助大家掌握前沿技能、拓展技术视野、迈进AIGC的大门 打造属于你的AI应用&#xff0c;满足不同阶段的学习实践需求 无论你是零基础…

面渣逆袭:微服务三十三问,两万字图文详解,速收藏

大家好&#xff0c;我是老三&#xff0c;面渣逆袭系列继续&#xff0c;这期给大家带来微服务相关的面试题。 概览 1.什么是微服务&#xff1f; 微服务&#xff08;Microservices&#xff09;是一种软件架构风格&#xff0c;将一个大型应用程序划分为一组小型、自治且松耦合的…

线程同步互斥锁

共用三个函数&#xff1a; mutex_lock() mutex_unlock() mutex_trylock() pthread_mutex_lock给安卓上层使用&#xff0c;mutex_lock给kernel使用&#xff0c;本质是一样的&#xff0c;都是IPC通信中的互斥锁&#xff0c;只不过安卓上层封装出pthread_mutex_lock。 pthr…