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脚本运行压缩脚本 关于 个人博客,里面偶尔更新,最近比较忙。发一些总结的帖子和思考。 江湖有缘相见🤝。如果读者想和我交…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
UE5 音效系统
一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类,将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix,将上述三个类翻入其中,通过它管理每个音乐…...
高效的后台管理系统——可进行二次开发
随着互联网技术的迅猛发展,企业的数字化管理变得愈加重要。后台管理系统作为数据存储与业务管理的核心,成为了现代企业不可或缺的一部分。今天我们要介绍的是一款名为 若依后台管理框架 的系统,它不仅支持跨平台应用,还能提供丰富…...
32位寻址与64位寻址
32位寻址与64位寻址 32位寻址是什么? 32位寻址是指计算机的CPU、内存或总线系统使用32位二进制数来标识和访问内存中的存储单元(地址),其核心含义与能力如下: 1. 核心定义 地址位宽:CPU或内存控制器用32位…...
