12.Python文件读写

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

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参数用来指定在文本文件发生编码错误时如何处理。推荐erro rs参数的取值为'ignore',表示在遇到编码错误时忽略该错误,程序会继 续执行,不会退出。

示例代码如下:

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

2 关闭文件

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

2.1 在finally代码块中关闭文件

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

示例代码如下:

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

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

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

3 读写文本文件

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

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

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

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

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

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

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

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

示例代码如下:

5 读写二进制文件

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

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

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

write(b):写入b字节,并返回写入的字节数。

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

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

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

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

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代码块,优化代码结构,并提高其可读性。()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JJJ:linux系统中第一个进程

以linux4.19内核linux系统中第一个进程。 执行shell指令 ps -ef 结果如下: xxxxxx-virtual-machine:~$ ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 20:55 ? 00:00:02 /sbin/init splash root …

【Web应用技术基础】CSS(4)——背景样式

第1题&#xff1a;背景颜色 .html <!DOCTYPE html> <html><head><meta charset"utf-8"><title>Hello World</title><link rel"stylesheet" href"step1/CSS/style.css"> </head><body>&…

词令蚂蚁庄园今日答案正确答案怎么获取查看蚂蚁庄园今天问题的正确答案?

词令蚂蚁庄园今日答案正确答案怎么获取查看蚂蚁庄园今天问题的正确答案&#xff1f; 1、打开「词令」关键词口令直达工具&#xff1b; 2、输入词令关键词直达口令「今日答案999」&#xff1b; 3、搜索直达词令蚂蚁庄园今日问题的正确答案&#xff1b; *注&#xff1a;词令蚂蚁…

【PythonGIS】Python实现批量导出面矢量要素(单个多面矢量->多个单面矢量)

可怜的我周六还在工作&#xff0c;已经很久没更新过博客了&#xff0c;今天正好有空就和大家分享一下。今天给大家带来的是使用Python将包含多个面要素/线要素的矢量批量导出单个要素的矢量&#xff0c;即一个要素一个矢量文件。之前写过多个矢量文件合并成一个矢量文件的博文&…

西南交大swjtu算法实验3.3|穷举法

1.实验目的 通过具体例子学习排列这种典型的穷举算法的求解过程以及程序框架&#xff0c;分析其算法的求解过程&#xff0c;以及如何设计穷举法解决实际问题。通过本实验&#xff0c;理解穷举法的特点以及实际应用中的局限性。 2.实验任务 有n (n>1&#xff09;个任务需要…

Visual Studio 2022 中VLD库如何安装

GitHub链接 Release v2.5.1 KindDragon/vld 点击可执行程序进行下载 点击可执行程序进行安装 双击打开 一直点击next即可完成安装&#xff08;不用在意安装路径&#xff0c;总共不到2MB&#xff09; 如果GitHub无法打开&#xff0c;可以私信我发你安装包直接安装

fpga_awb

色温: sesor原始图像中的白色如果不经AWB处理&#xff0c;在高色温(如阴天)下偏蓝&#xff0c;在低色温下偏黄。 引入白平衡算法 而AWB的核心就是调整图像色温&#xff0c;使得摄像头采集的图像更加真实&#xff0c;达到人眼观察的效果。 白平衡一般通过调节传感器输出图像RGB…

【aws】架构图工具推荐

碎碎念 以前以为日本冰箱论是个梗&#xff0c;结果居然是真的。用光盘传真其实还能理解&#xff08;毕竟我也喜欢电子古董2333&#xff09;&#xff0c;但是画架构图居然用的是excel&#xff0b;截图&#xff01;啊苍天呐&#xff0c;然后看到隔壁工位用excel画web原型又感觉释…

svg实现环形进度条

实现效果图&#xff1a; svg相关知识 这里只介绍本次用到的元素&#xff0c;更多详情&#xff1a;SVG&#xff1a;可缩放矢量图形 defs&#xff1a;定义需要重复利用的图形元素linearGradient&#xff1a;定义线性渐变&#xff0c;用来图形元素的填充或描边使用stop&#x…

hcip综合实验2

目录 实验拓扑&#xff1a; 实验要求&#xff1a; 实验思路&#xff1a; 实验步骤&#xff1a; 1.配置设备接口IP 2.通过配置缺省路由让公网互通 3.配置ppp 1.R1和R5间的ppp的PAP认证&#xff1b; 2.R2与R5之间的ppp的CHAP认证; 3. R3与R5之间的HDLC封装; 4.构建R1、…

动态规划之子序列(三)

583. 两个字符串的删除操作 给定两个单词 word1 和 word2&#xff0c;找到使得 word1 和 word2 相同所需的最小步数&#xff0c;每步可以删除任意一个字符串中的一个字符。 示例&#xff1a; 输入: “sea”, “eat” 输出: 2 解释: 第一步将"sea"变为"ea"…

c实现猜数游戏(猜不对可是要自动帮你电脑关机)

接下来的日子会顺顺利利&#xff0c;万事胜意&#xff0c;生活明朗-----------林辞忧 前言 猜数字游戏作为一个基础的C程序小项目&#xff0c;实现简单&#xff0c;可以帮助我们巩固很多知识&#xff0c;作为扩展接下来我们实现一个自定猜数次数&#xff0c;用完次数电脑自动…

keepalived+LVS高可用部署

目录 一.两台设备&#xff08;2.130和2.133&#xff09;作为调度器&#xff0c;前主后备 1.部署keepalived 2.修改配置文件准备启动 3.配置keepalived的系统日志并启动 二.模拟调度器掉点和web服务进程丢失 1.调度器掉点 2.当类似于httpd这种网站服务掉点 三.以三种健康…

【从前端入门到全栈】前端框架之核心概念

大家好&#xff0c;我是江辰&#xff0c;从前端入门到全栈是我全新系列文章&#xff0c;从去年一直囔囔着要写&#xff0c;今年总算开始了&#xff01;预计在10篇左右。知识面从 前端&#xff0c;后端&#xff0c;运维&#xff0c;脚本等&#xff0c;都有涉及&#xff0c;主打一…

Spark-Scala语言实战(9)

之前的文章中&#xff0c;我们学习了如何在spark中使用RDD方法的flatMap,take,union。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 Spark-Scala语言实战&am…

数据分析web可视化神器---streamlit框架,无需懂前端也能搭建出精美的web网站页面

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属的专栏&#xff1a;数据分析系统化教学&#xff0c;零基础到进阶实战 景天的主页&#xff1a;景天科技苑 文章目录 Streamlit什么是streamli…

基于springboot+vue实现的学校田径运动会管理系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】&#xff1a;Java 【框架】&#xff1a;spring…

CommunityToolkit.Mvvm----配置

一、介绍&#xff1a; CommunityToolkit.Mvvm 包&#xff08;又名 MVVM 工具包&#xff0c;以前称为 Microsoft.Toolkit.Mvvm&#xff09;是一个现代、快速和模块化的 MVVM 库。 它是 .NET 社区工具包的一部分&#xff0c;围绕以下原则生成&#xff1a; 独立于平台和运行时 - …

MySQL MHA高可用配置以及故障切换

目录 什么是 MHA 什么是 MHA MHA&#xff08;MasterHigh Availability&#xff09;是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。解决主从架构中的主服务器的单点问题 MySQL故障切换过程中&#xff0c;MHA能做到0-30秒内自动…

计算机网络:数据链路层 - 封装成帧 透明传输 差错检测

计算机网络&#xff1a;数据链路层 - 封装成帧 & 透明传输 & 差错检测 数据链路层概述封装成帧透明传输差错检测 数据链路层概述 从数据链路层来看&#xff0c;主机 H1 到 H2 的通信可以看成是在四段不同的链路上的通信组成的&#xff0c;所谓链路就是从一个节点到相邻…