当前位置: 首页 > news >正文

第八章 文件与异常

引言

  1. 码字不易,如果这篇文章对您有帮助的话,希望您能点赞、收藏、加关注!您的鼓励就是我前进的动力!
  2. 目录

    • 一、读取文件
      • (一)读取文件:open(), with, read()
      • (二)文件路径
      • (三)文件内容操作:readlines(), replace()
    • 二、写入文件:write()
    • 三、异常:try-except-else
    • 四、存储数据: json.dump(), json.load()
    • 五、补充:split(), pass

一、读取文件

(一)读取文件:open(), with, read()

  1. 函数open接受一个参数:要打开的文件的名称。
  2. 关键字 with 在不再需要访问文件后将其关闭。你只管打开文件,并且在需要的时候使用它,python会自动在合适的时候(缩进结束的时候)将其关闭。
  3. 方法read() 到达文件末尾时,返回一个空字符串,而将这个空字符串显示出来就是一个空行。可在函数中调用 print() 中使用 rstrip() 。
with open('test.txt') as file:content=file.read()
print(content.rstrip())
#输出:test contents

(二)文件路径

  1. 相对路径:和代码保存在同一个文件夹的文件的路径。
  2. 绝对路径:将文件在计算机中准确位置告诉python,这样就不用关心当前运行的程序存储在什么地方了。绝对路径通常会比较长,可将其赋给一个变量,再由变量传递给open函数。
  3. 显示文件路径时,WINDOWS系统使用反斜杠(\),而不是斜杠(/),但在代码中依然可以使用斜杠。如果一定要使用反斜杠,可对路径中每个反斜杠都进行转义(即使用双斜杠)。
#相对路径:
path='test.txt'#绝对路径
path='D:/PythonExp/PythonExp1/test.txt' #使用斜杠
path='D:\\PythonExp\\PythonExp1\\test.txt' #使用反斜杠with open(path) as file:content=file.read()

(三)文件内容操作:readlines(), replace()

  1. 逐行读取。
path='test.txt'
with open(path) as file:for line in file:print(line)
#输出:
# test content1# test content2# test content3
  1. 文件关闭后继续使用文件内容方法:使用关键字 with 时,open返回的文件对象只在 with 代码块内可用。如果在代码块外访问文件的内容,可在代码块内将文件的各行存储在一个列表中,并在with代码块外使用该列表:可以立即处理文件的各个部分,也可以推迟到程序后面再处理。
  2. 方法 readlines() 从文件中读取每一行,并将其存储在一个列表中。
path='test.txt'
with open(path) as file:lines=file.readlines()for line in lines:print(line.rstrip())# 输出:
# test content1
# test content2
# test content3
  1. 读取文本文件时,返回的结果均为字符串。如果读取的数并要作为数值使用,就必须使用函数 int() 将其转换为整数,或使用函数 float() 将其转换为浮点数。
  2. 方法replace() 将字符串中特定单词都替换为另一个单词。
message="联想消费互联网服务业务"
print(message.replace('联想','Lenovo'))
#输出:Lenovo消费互联网服务业务

二、写入文件:write()

  1. 使用open打开文件时,第二个参数可指定打开模式:‘r’ 为只读模式, ‘w’ 为写入模式,‘a’ 为附加模式,‘r+’ 为读写模式。 如果省略了模式参数,python将默认以只读的模式打开文件。
  2. 以写入模式打开文件时千万要小心,因为如果指定的文件已经存在,python将在返回文件对象前清空该文件中的内容。
  3. Python只能将字符串写入文本文件,要将数值数据存储到文本文件中,必须先使用函数str() 将其转换为字符串格式。
  4. 要让每个字符串都单独占一行,需要在方法调用write() 中包含换行符。
  5. 如果要给文件添加内容,而不是覆盖原有的内容,可以附加模式打开文件,此时如果指定的文件不存在,python将为你创建一个空文件。
path='test.txt'
with open(path,'a') as file:file.write("\nAs long as you love me.")#文件内容:
# test content1
# test content2
# test content3
# As long as you love me.

三、异常:try-except-else

  1. try-except:使用 try-except 代码块时,即便出现异常程序,也将继续运行,显示你编写的错误消息,而不是traceback。
  2. 使用try-except-else 代码块时,程序只执行except或else中的其中一项,然后才执行try-except-else 代码块后面的代码。
  3. 通过将可能引发错误的代码放在 try-except 代码块中,可提高程序抵御错误的能力。
  4. 使用 try-except 代码块提供了两个重要的优点。避免用户看到traceback,以及让程序继续执行下去。
try:print(8/0)
except ZeroDivisionError:print("除数不能为0!")
else:	#try代码执行成功才执行的代码pass
print('1')#输出:
# 除数不能为0!
# 1

四、存储数据: json.dump(), json.load()

  1. 函数 json.dump() 接受两个实参:要存储的数据,以及可用于存储数据的文件对象。
  2. 函数 json.load() 将文件内容读取到内存中。参数为要读取的文件对象。
  3. 使用这两个函数的好处是:从文件存取数据时不需要转换为字符串型,可以保持原来的数据类型直接存取。
import json
list=[1,2,3,4,5]
path='test.txt'with open(path,'w') as file:json.dump(list,file)with open(path) as file:content=json.load(file)print(content)#文件中的内容:[1, 2, 3, 4, 5]
#输出:[1, 2, 3, 4, 5]

五、补充:split(), pass

  1. 方法split() 能根据一个字符串创建一个单词列表。
message="Near, far, wherever you are."
print(message.split())
#输出:['Near,', 'far,', 'wherever', 'you', 'are.']
  1. pass语句:可用于让python在代码块中什么都不要做。

参考资料:
[1] Eric Matthes. Python编程从入门到实践. 北京:人民邮电出版社, 2020.
[2]嵩天,礼欣,黄天羽. Python语言程序设计基础(第二版). 北京:高等教育出版社, 2017.
[3]Python语言程序设计,北京理工大学 嵩天

相关文章:

第八章 文件与异常

引言 码字不易,如果这篇文章对您有帮助的话,希望您能点赞、收藏、加关注!您的鼓励就是我前进的动力! 目录 一、读取文件(一)读取文件:open(), with, read()(二)文件路径…...

Gradle使用

下载Gradle Gradle Distributions 配置环境变量 测试是否成功 cmd输入gradle -v 在.gradle目录下创建一个init.gradle allprojects { repositories { maven { url file:///D:/maven/myRepository} ## 这里是本地maven仓库地址,没有就会依次向下设置的地址寻…...

从七个方面聊聊Linux到底强在哪

从事计算机相关行业的同学不难发现,身边总有一些朋友在学习linux,有的开发同学甚至自己的电脑就是它。经常听他们说linux如何好用等等。那么linux到底好在那里,能让大家如此喜欢。这也是我经常问自己的一个问题。下面我将通过以下七点来为大家…...

python读写json文件方法详解

在我们日常使用 Python时,经常会使用到 json文件。那么在平时写一些小程序时,如何使用 json文件呢?今天我将介绍如何读取和写入 Json文件。 json是一种数据结构,它是将字符串转换成数据的一种技术。使用 json可以非常方便的将一组…...

多处最优服务次序问题——算法设计与分析(C实现)

问题描述:设有n个顾客同时等待一项服务。顾客i需要的服务时间为,共有s处可以提供此项服务。应该如何安排n个顾客的服务次序,才能使平均等待时间达到最小?平均等待时间是n个顾客的等待服务时间的总和除以n。 算法设计:对…...

2023 年 IntelliJ IDEA 下载安装教程,超详细图文教程,亲测可用

. IDEA 下载 1、打开浏览器输入https://www.jetbrains.com/,进入 Jetbrains官网,点击 Developer Tools,再点击 Intellij IDEA 2、点击中间的 Download,进入IDEA下载界面 3、选择左边的 Ultimate 版本进行下载安装。Ultimate 版…...

前端框架比较:Vue.js、React、AngularJS三者的优缺点和应用场景

章节一:引言 在当前的互联网开发中,前端框架已经成为了不可或缺的一部分。然而,前端框架如此之多,该如何选择呢?Vue.js、React和AngularJS是目前比较受欢迎的三个前端框架,它们各自有着不同的优缺点和应用…...

JavaScript中的数据可视化和动画效果

摘要: JavaScript是一种强大而灵活的编程语言,被广泛用于网页开发和交互设计。在数据可视化和动画效果方面,JavaScript提供了丰富的工具和库,使开发者能够创建出令人印象深刻的交互式数据可视化和动画效果。本文将介绍JavaScript中…...

如何搭建在线产品手册

在现代社会,随着科技的发展,越来越多的企业将目光投向互联网,并将自己的产品推向了线上。而对于这些线上产品,拥有一份完备的、易用、高质量的在线产品手册显得尤为重要。 那么如何才能搭建一份高质量且易用的在线产品手册呢&…...

Java版企业电子采购招标系统源码

一、立项管理 1、招标立项申请 功能点:招标类项目立项申请入口,用户可以保存为草稿,提交。 2、非招标立项申请 功能点:非招标立项申请入口、用户可以保存为草稿、提交。 3、采购立项列表 功能点:对草稿进行编辑&#x…...

【操作系统复习】第6章 虚拟存储器 2

请求分页中的内存分配 在为进程分配物理块时,要解决下列的三个问题: 1. 保证进程可正常运行所需要的最少物理块数 2. 每个进程的物理块数,是固定值还是可变值(分配策略) 3. 不同进程所分配的物理块数&#xff…...

【OAI】OAI5G核心网VPP-UPF网元分析

文章目录 VPP_UPF_CONFIG_GENERATION.mdVPP UPF Configuration GenerationEnvironment variablesInterfacesInterface Configuration ExamplesCentral UPFA-UPFI-UPFUL CL FEATURE_SET.mdVPP_UPG_CLI参考文献 VPP_UPF_CONFIG_GENERATION.md VPP UPF Configuration Generation …...

【上进小菜猪】使用Ambari提高Hadoop集群管理和开发效率:提高大数据应用部署和管理效率的利器

📬📬我是上进小菜猪,沈工大软件工程专业,爱好敲代码,持续输出干货,欢迎关注。 介绍 Hadoop是一种开源的分布式处理框架,用于在一组低成本硬件的集群上存储和处理大规模数据集。Ambari是一种基…...

Day3--C高级3

一.编写一个名为myfirstshell.sh的脚本,它包括以下内容。 1、包含一段注释,列出您的姓名、脚本的名称和编写这个脚本的目的 2、和当前用户说“hello 用户名” 3、显示您的机器名 hostname 4、显示上一级目录中的所有文件的列表 5、显示变量PATH和HO…...

第9章 CURD操作与MemoryCache缓存的强制清理的实现

1 重构 Data.Repository<TEntity> using Core.Caching; using Core.Domain; using Core.Events; using Microsoft.EntityFrameworkCore; namespace Data { ///<typeparam name"TEntity">泛型类型实例(这里特指:1个指定实体的类型实例)。</typepa…...

TCP 协议特性详解

TCP 协议特性总结 TCP协议特点TCP协议段格式TCP原理确认应答&#xff08;安全机制&#xff09;超时重传&#xff08;安全机制&#xff09;连接管理&#xff08;安全机制&#xff09;(面试高频题)三次握手四次挥手 滑动窗口&#xff08;效率机制&#xff09;流量控制&#xff08…...

电子招投标采购系统源码:采购过程更规范,更透明

满足采购业务全程数字化&#xff0c; 实现供应商管理、采购需求、全网寻源、全网比价、电子招 投标、合同订单执行的全过程管理。 电子招标采购&#xff0c;是指在网上寻源和采购产品和服务的过程。对于企业和企业主来说&#xff0c;这是个既省钱又能提高供应链效率的有效方法…...

一篇了解智慧网关

智慧网关是指基于互联网技术的智能网关&#xff0c;能够连接不同的物联网设备和传感器&#xff0c;实现数据采集、信息传递、远程控制、通信管理等功能。作为物联网架构中的核心设备之一&#xff0c;智慧网关在智能家居、智慧城市、智能制造、智能交通、智能农业等领域得到了广…...

自学软件测试,从10K到40K的技术路线,也就是这些东西...

如果有一天我从梦中醒来时&#xff0c;发现自己的几年自动化测试工程师经验被抹掉&#xff0c;重新回到了一个小白的状态。我想要重新自学自动化测试&#xff0c;然后找到一份自己满意的测试工作&#xff0c;我想大概只需要6个月的时间就够了&#xff0c;如果比较顺利的话&…...

Qt libqrencode二维码——QtWidgets

前言 之前写过二维码的程序&#xff0c;但是在U盘上&#xff0c;没带&#xff0c;又重新找的网上资料写的。 网上二维码的生成&#xff0c;大多用到是第三方库libqrencode,这也一样&#xff1a; 效果图 本来是个动图的&#xff0c;都被和谐了&#xff0c;所以换成截图&…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...