Python基础学习(五)文件和异常
文件操作, 使用代码 来读写文件
1, 可以将数据保存到文件中,
2, 自动化, 测试数据在文件中保存的, 从文件中读取测试数据,进行自动化代码的执行
1.文件
文件: 可以存储在长期存储设备(硬盘, U盘)上的一段数据即为文件
1, 计算机只认识 二进制数据(0 和 1)
2, 所有的文件在计算机中存储的形式都是 二进制即 0 和 1 ,打开文件看到的是文字不是 0 和 1 ,原因是打开文件的
软件会自动的将二进制转换为 文字
文件的分类(根据能否使用文本软件(记事本)打开文件):
- 文本文件
- 可以使用记事本软件打开
- txt, py, md, json
- 二进制文件
- 不能使用 记事本软件打开
- 音频文件 mp3
- 视频文件 mp4 ....
- 图片 png, jpg, gif, exe
2.文件操作
2.1打开文件 open()
open(file, mode='r', encoding=None) # 将硬盘中的文件 加载到内存中
- file: 表示要操作的文件的名字,可以使用相对路径 和绝对路径
- 绝对路径, 从根目录开始书写的路径 C:/ D:/
- 相对路径, 从当前目录开始书写的路径 ./ ../
- mode: 打开文件的方式
- r , 只读打开 read, 如果文件不存在,会报错
- w , 只写打开, write, 如果文件存在, 会覆盖原文件
- a , 追加打开, append, 在文件的末尾写入新的内容
- encoding: 编码格式, 指 二进制数据 和 汉字 转换的规则的
- utf-8(常用) : 将一个汉字转换为 3 个字节的二进制
- gbk: 将一个汉字转换为 2 个字节的二进制
返回值: 文件对象, 后续对文件的操作, 都需要这个文件对象
2.2关闭文件 close()
文件对象.close() # 关闭文件, 如果是 写文件, 会自动保存, 即将内存中的数据同步到硬盘中
2.3读文件 read()
变量 = 文件对象.read()
返回值: 返回读取到文件内容, 类型是字符串
f = open('C:/Users/camellia/Desktop/a.txt', encoding='utf-8')
#C:/Users/camellia/Desktop/a.txtz文件路径要写正确不然会报错
data = f.read()
print(data)
f.close()


2.4写文件 write()
文件对象.write()
# 参数: 写入文件的内容, 类型 字符串
# 返回值: 写入文件中的字符数, 字符串的长度, 一般不关注
# 1, 打开文件
f = open('C:/Users/camellia/Desktop/a.txt', 'w', encoding='utf-8')
# 2, 写文件
f.write('新的一年开开心心\n快快乐乐')
# 3, 关闭文件
f.close()


2.5文件打开的另一种写法
with open(file, mode, encoding) as 变量: # 变量 就是文件对象pass
# 使用这种写法打开文件, 会自动进行关闭,不用手动书写关闭的代码
# 出了 with 的缩进之后, 文件就会自动关闭
with open('C:/Users/camellia/Desktop/a.txt', 'a', encoding='utf-8') as f:f.write('\nhapper new year\n')


2.6按行读取⽂件 readline()
⽂件对象.readline() # ⼀次读取⼀⾏的内容, 返回读取到的
内容
read() 和 readline() 如果读到⽂件末尾, 返回的都是 空字
符串
with open('C:/Users/camellia/Desktop/a.txt', encoding='utf-8') as f:buf = f.readline()print(buf)buf1 = f.readline()print(buf1)

2.7读取大文件
with open('a.txt', encoding='utf-8') as f:while True:buf = f.readline() # ⽂件读完了,返回 空字符串if buf: # 空字符串 是 False, ⾮空字符串是Trueprint(buf, end='')else:break
3.json文件
r w a 称为是⽂本⽅式打开, 适⽤于 ⽂本⽂件, 会对⼆进制进⾏编码转换
rb wb ab 称为是⼆进制⽅式打开, 可以打开⽂本⽂件和⼆进制⽂件, 但是 ⼆进制⽂件只能使⽤ ⼆进制⽅式打开,同时,不能传递 encoding 参数
1, json文件的本质也是文本文件, 就可以直接使用 read 和write去进行操作
2, json文件比较特殊, 比较像 Python 中的字典和列表
3, json文件使用比较频繁,按照 read 和 write 的操作,比较麻烦,专门的方法来操作 json文件, 可以直接得到 Python 中的列表和字典
3.1介绍
1, json ⽂件, 是⼀种基于⽂本,独⽴于语⾔的轻量级数据交换格式。- 基于⽂本, ⽂本⽂件,不包含 图⽚,视频等- 独⽴于语⾔, 不是某⼀种语⾔特有的, Python,Java, C++,....- 轻量级, 相同的数据量,json ⽂件的占⽤的⽂件⼤⼩相对较⼩- 数据交换格式, 后端服务器 和前端⻚⾯ 交换数据使⽤的格式
2, 在⾃动化测试中经常⽤来存放测试数据,⽂件后缀名为:.json
3.2JSON语法
1, json 中的数据类型- 对象 {} ----> Python 字典- 数组 [] ----> Python 列表- 字符串, 必须使⽤双引号 -----> str- 数字类型 ---> int, float- bool类型(true false) ----> True False- 空值 null -----> None
2, json ⽂件,是⼀个对象 或者是数组, 对象和数组可以相互嵌套
3, json 中的对象,是由键值对组成的, 键必须是 字符串类型
4, json 中的数据直接使⽤逗号隔开, 最后⼀个数据后边不能加逗号
5, json ⽂件的后缀是 .json
3.3json文件的定义

{
"name": "⼩明",
"age": 18,
"isMan": true,
"school": null,
"like": ["听歌", "吃饭", "打⾖⾖"],
"address": {"country": "China","city": "⼴州"}
}
3.4读取 json文件
1, 可以直接使⽤ read 去读, 但是 想要取到数据很麻烦
2, 使⽤ 专⻔的⽅法去读- 1. 导包 import json- 2. json.load(⽂件对象) ---> 得到的是 列表 或者字典
import jsonwith open('info.json', encoding='utf-8') as f:buf = json.load(f)print(type(buf))print(buf)# 姓名print(buf.get('name'))# 城市print(buf.get('address').get('city'))

4.异常
1, 程序在运行时, 如果Python解释器遇到到⼀个错误, 则会停止程序的执行, 并且提示⼀些错误信息, 这就是异常.
2, 程序停止执行并且提示错误信息这个动作, 通常称之为: 抛出(raise) 异常异常类型: 错误描述信息
FileNotFoundError: [Errno 2] No such file ordirectory: 'aaaa.txt'
ZeroDivisionError: division by zero
ValueError: invalid literal for int() with base 10:'78.1'
4.1捕获异常
1, 程序代码在执行的时候, 如果遇到异常, 程序就会终止,不会继续执行
2, 需求: 程序遇到异常之后, 不会结束,可以继续执行,
3, 实现需求: 就需要使用异常捕获
4.2基本语法
try:可能发⽣异常的代码
except: # 可以捕获任意类型的异常发⽣了异常执⾏的代码
# 1. 获取⽤户从键盘输⼊的数据
num = input('请输⼊数字:')
try:# 2. 转换数据类型为整数num = int(num)# 3. 数据转换类型正确时, 输出数据内容print(num)
except:# 4. 数据转换类型错误时, 提示输⼊正确数据print('请输⼊正确的数字')
4.3捕获指定类型的异常
发⽣的异常可能存在多种, 针对不同类型的异常, 解决处理的方案不⼀样
try:可能发⽣异常的代码
except 异常类型1:发了异常类型1,执⾏的代码
except 异常类型2:发了异常类型2,执⾏的代码
except .....:pass
try:num = int(input('请输⼊⼀个整数数字:'))num1 = 8 / numprint(num1)
except ValueError: #print('输⼊的内容⾮数字,请重新输⼊')
except ZeroDivisionError:print('不能输出数字 0, 请重新输⼊')
4.4捕获未知类型的异常
try:可能发⽣异常的代码
except Exception as 变量: # Exception 常⻅异常类的⽗类, 变量 异常对象,print()可以打印异常信息发⽣异常执⾏的代码
try:num = int(input('请输⼊⼀个整数数字:'))num1 = 8 / numprint(num1)
except Exception as e:print(f'发⽣了异常, {e}')
4.5异常捕获的完整结构
try:可能发⽣异常的代码
except 异常类型:发⽣了指定类型的异常执⾏的代码
except Exception as e:发⽣了其他类型的异常执⾏的代码
else:没有发⽣异常,会执⾏的代码
finally:不管有没有发⽣异常,都会执⾏的代码
4.6异常传递
1, 异常传递 是 Python 中已经实现好的功能, 不需要我们写代码实现
2, 异常传递是指, 在函数的嵌套调用过程中,如果发生了异常,没有进行捕获,会将这个异常传递到函数调用的地方 直到被捕获为止, 如果⼀直没有捕获,才会报错,终止执行
4.7抛出异常
1, 在执行代码的过程中,之所以会发生异常,终止代码执行,是因为代码执行遇到了 raise 关键字
2, raise 关键字的作用, 就是来抛出异常,让代码终止执行
3, 应用场景: 自己书写代码模块,让别人使用,为了让别⼈按照你的规定使用你的代码,你就可以在他不满足你条件的情况下,使用raise 抛出异常
相关文章:
Python基础学习(五)文件和异常
文件操作, 使用代码 来读写文件 1, 可以将数据保存到文件中, 2, 自动化, 测试数据在文件中保存的, 从文件中读取测试数据,进行自动化代码的执行 1.文件 文件: 可以存储在长期存储设备(硬盘, U盘)上的一段数据即为文件 1, 计算机只认识 二进制数据(0 和 1) 2, 所有的文件在计算…...
Mono里运行C#脚本29—mono_trampolines_init
一、概念解释 在计算机编程中,trampoline 通常是一段代码,它起到一个中间跳转的作用。它就像一个跳板,程序可以先跳转到这个跳板上,然后再从跳板跳转到最终的目的地。这种技术在许多不同的场景中都有应用,以下是一些主要方面: 函数调用方面: 当涉及到不同执行环境或不…...
从语音识别到图像识别:AI如何“看”和“听”
引言 随着人工智能技术的不断进步,AI的“听”和“看”能力正变得越来越强大。从语音识别到图像识别,AI不仅能够通过声音与我们互动,还能通过视觉理解和分析周围的世界。这些技术不仅改变了我们与机器的交互方式,也在各行各业中带…...
vue3+ts+uniapp 微信小程序(第一篇)—— 微信小程序定位授权,位置信息权限授权
文章目录 简介一、先看效果1.1 授权定位前,先弹出隐私协议弹框1.2 上述弹框点击同意,得到如下弹框1.3 点击三个点,然后点设置 1.4 在1.2步骤下,无论同意或者拒绝 二、manifest.json 文件配置三、微信公众平台配置3.1 登录进入微信…...
回归算法、聚类算法、决策树、随机森林、神经网络
这也太全了!回归算法、聚类算法、决策树、随机森林、神经网络、贝叶斯算法、支持向量机等十大机器学习算法一口气学完!_哔哩哔哩_bilibili 【线性回归、代价函数、损失函数】动画讲解_哔哩哔哩_bilibili 14分钟详解所有机器学习算法:…...
[Qt]系统相关-文件操作-QFile、QFileInfo类以及相关操作函数
目录 一、Qt文件系统 1.Qt文件系统的介绍 2.Qt文件类 二、Qt文件的操作 1.文件的打开 2.文件的读写操作 3.关闭操作 4.接口使用案例 5.获取文件的相关属性 三、文件的分类 1.文本文件 2.二进制文件 3.二者的区别 一、Qt文件系统 1.Qt文件系统的介绍 文件操作是所…...
C#高级:用Csharp操作鼠标和键盘
一、winform 1.实时获取鼠标位置 public Form1() {InitializeComponent();InitialTime(); }private void InitialTime() {// 初始化 Timer 控件var timer new System.Windows.Forms.Timer();timer.Interval 100; // 设置为 100 毫秒,即每 0.1 秒更新一次timer.…...
Mac 使用 GVM 管理多版本 Go 环境
使用 GVM 管理多版本 Go 环境 在本文中,我们将使用 gvm(Go Version Manager)工具管理本地多个 Go 语言版本。gvm 功能类似于 Python 的 Anaconda,可以方便地切换不同版本的 Go 环境,非常适合需要多版本开发与测试的场…...
25届合肥工业大学自动化考研复试攻略
本文内容,全部选自联盟自动化考研联盟企业店的:《合肥工业大学控制综合笔试篇》。后续会持续更新更多内容,记得关注哦~ 目录 Part1:复试指南具体内容 Part2:复试复习相关介绍 Part1:复试指南具体内容 1…...
【24】Word:小郑-准考证❗
目录 题目 准考证.docx 邮件合并-指定考生生成准考证 Word.docx 表格内容居中表格整体相较于页面居中 考试时一定要做一问保存一问❗ 题目 准考证.docx 插入→表格→将文本转换成表格→✔制表符→确定选中第一列→单击右键→在第一列的右侧插入列→布局→合并单元格&#…...
前瞻2024:前沿技术的全景洞察与深度剖析
在当今时代,前沿技术以前所未有的速度发展,深刻地改变着我们的生活、工作和社会的各个层面。从人工智能的迅猛发展到量子计算的逐步突破,从生物技术的不断创新到新能源技术的广泛应用,这些前沿技术正成为推动社会进步和经济发展的…...
告别手动编辑:如何用Python快速创建Ansible hosts文件?
在自动化运维领域,Ansible是一款非常强大的工具,它可以帮助我们管理和配置大量的服务器。为了让Ansible能够有效地管理这些服务器,我们需要一个hosts清单文件,该文件定义了Ansible要管理的目标主机。在实际应用中,我们…...
ESP32云开发二( http + led + lcd)
文章目录 前言先上效果图platformio.iniwokwi.tomldiagram.json源代码编译编译成功上传云端完结撒花⭐⭐⭐⭐⭐ 前言 阅读此篇前建议先看 此片熟悉下wokwi https://blog.csdn.net/qq_20330595/article/details/144289986 先上效果图 Column 1Column 2 platformio.ini wokwi…...
Java 基于微信小程序的原创音乐小程序设计与实现(附源码,部署,文档)
大家好,我是stormjun,今天为大家带来的是Java实战项目-基于微信小程序的原创音乐小程序设计与实现。该系统采用 Java 语言 开发,MySql 作为数据库,系统功能完善 ,实用性强 ,可供大学生实战项目参考使用。 博…...
JavaWeb开发(十五)实战-生鲜后台管理系统(二)注册、登录、记住密码
1. 生鲜后台管理系统-注册功能 1.1. 注册功能 (1)创建注册RegisterServlet,接收form表单中的参数。 (2)service创建一个userService处理业务逻辑。 (3)RegisterServlet将参数传递给ser…...
在stm32中C语言编写的程序中,一个整形数据是怎么存储的,高位在前还是低位在前
目录 举个例子 如何验证 小结 在 STM32(基于 ARM Cortex-M 架构)的系统中,默认是小端(Little Endian) 存储方式。也就是说,对于一个整型(例如 32 位 int),它的最低有效…...
Redis系列之底层数据结构字典Dict
Redis系列之底层数据结构字典Dict Dict数据结构 Dict是Redis数据结构中使用最为频繁的复合型数据结构,本质上是一个哈希表 查看redis6.0版本的源码,链接:https://github.com/redis/redis/blob/6.0/src/dict.h 哈希表的结构定义࿱…...
CSS 溢出问题及解决方案:实用案例与技巧
在网页开发中,CSS 的布局和样式起着至关重要的作用,但经常会遇到一个棘手的问题——溢出问题。溢出是指元素内的内容超出了其设定的容器大小,这不仅会影响页面的美观,还可能干扰用户体验。本文将详细探讨 CSS 溢出问题的案例&…...
FastExcel 新一代的潮流 (EasyExcel)
目录 简介 FastExcel的特点 FastExcel使用方法详解 创建实体类和监听器 实现写入和读取功能 Excel转换为PDF 小结 FastExcel与EasyExcel的区别 结论 简介 FastExcel是由原EasyExcel作者在阿里巴巴宣布停止维护EasyExcel之后推出的升级版框架。它继承了EasyExcel的所有…...
使用ffmpeg提高mp4压缩比,减小文件体积【windows+ffmpeg+batch脚本】
文章目录 关于前情提要FFmpeg是什么使用脚本运行FFmpeg首先,下载ffmpeg.exe然后在视频相同位置写一个bat脚本运行压缩脚本 关于 个人博客,里面偶尔更新,最近比较忙。发一些总结的帖子和思考。 江湖有缘相见🤝。如果读者想和我交…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
