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脚本运行压缩脚本 关于 个人博客,里面偶尔更新,最近比较忙。发一些总结的帖子和思考。 江湖有缘相见🤝。如果读者想和我交…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...

分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving
地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]
报错信息:libc.so.6: cannot open shared object file: No such file or directory: #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...

Python训练营-Day26-函数专题1:函数定义与参数
题目1:计算圆的面积 任务: 编写一个名为 calculate_circle_area 的函数,该函数接收圆的半径 radius 作为参数,并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求:函数接收一个位置参数 radi…...