Python基础知识 (九)os模块、异常、异常的传递性
目录
OS模块
目录的具体操作
什么是异常
异常常见处理方式
异常分类:
捕获一个指定异常
捕获多个异常
捕获所有异常
异常具有传递性
OS模块
在Python中,os模块的常用函数分为两类:
(a)通过os.path调用的函数
(b)通过os直接调用的函数
在Python的os模块中,通过os.path常用函数:
| 函数名 | 含义 |
| exists(pathname) | 用来检验给出的路径是否存在。 |
| isfile(pathname) | 用来检验给出的路径是否是一个文件。 |
| isdir(pathname) | 用来检验给出的路径是否是一个目录。 |
| abspath(pathname) | 获得绝对路径。 |
| join(pathname,name) | 连接目录与文件名或目录。 |
| basename(pathname) | 返回单独的文件名。 |
| dirname(pathname) | 返回文件路径。 |
说明:
上述常用函数需要使用os.path来进行调用。
import os# 定义变量
path = "./data/file/hello.txt"
# 是否存在
print(os.path.exists(path))
# 是否是文件
print(os.path.isfile(path))
# 目录
print(os.path.isdir(path)) # False
# 绝对路径
print(os.path.abspath(path))
# 单独文件名
print(os.path.basename(path))
目录的具体操作
在Python的os模块中,可直接通过os调用的常用函数:
| 函数名 | 含义 |
| getcwd() | 获得当前工作目录,即当前Python脚本工作的目录路径。 |
| system(name) | 运行shell命令。 |
| listdir(path) | 返回指定目录下的所有文件和目录名,即获取文件或目录列表。 |
| mkdir(path) | 创建单个目录。 |
| makedirs(path) | 创建多级目录。 |
| remove(path) | 删除一个文件。 |
| rmdir(path) | 删除一个目录。 |
| rename(old, new) | 重命名文件。 |
说明:
上述常用函数可直接使用os来进行调用。
import os# 1.获取目录
path = os.getcwd()
print(path)# 2.获取文件或列表信息
path_name = "./data/file"
dir_lists = os.listdir(path_name)
print(dir_lists)# 3.新建目录
# 问题: 当目录不存在时,才需要创建; 已存在, 则不创建
new_path_name = "./data/file/hello/world/python"
if not os.path.exists(new_path_name): # 逻辑# 创建os.makedirs(new_path_name)print("已创建成功!!!")
什么是异常
异常指的是Python程序发生的不正常事件。
有时候,异常可称为错误。
当检测到一个错误时,Python解释器就无法继续执行,反而出现了一些错误的提示,这就是异常,也就是我们常说的BUG。
# 1.正常
print("Hello1")
print("Hello2")
# 2.异常处理
try:datas = [1,2,3]print(datas[100]) # 崩溃
except:pass
print("Hello3")
print("Hello4")
异常常见处理方式
异常处理语法:
try:可能发生异常的代码
except:如果出现异常时, 执行的代码
说明:
try、except都是关键字,用于处理异常。
# 1.制造异常
# 2.处理
try:datas = [1,2,3]print(datas[100]) # 中断
except:print("已经发生了异常》。。")
print("11111111111111") # 当处理了异常后,程序可以稳定继续往后执行代码
异常分类:
捕获异常是处理异常的标准形式。通常情况下,捕获异常分为三类:
(1)捕获一个指定异常
(2)捕获多个异常
(3)捕获所有异常
捕获一个指定异常
来看看捕获一个指定异常的语法:
try:可能发生异常的代码
except 异常类型名:当捕获到该异常类型时,执行的代码
捕获多个异常
捕获多个异常指的是:可以对一段可能发生异常的代码做多个异常类型的判断处理。
try:可能发生异常的代码
except (异常类型1,类型2,...):如果捕获到该异常类型时,执行的代码
# 1.可能发生异常的代码
try:dicts = {}print(dicts["name"])data = [1,2,3]print(data[100])
# 2.处理异常
except IndexError as error:print(f"可能会发生异常.=={error}")
except KeyError:print("可能会发生keyerror...")print("11111111111111")# 升级
try:dicts = {}print(dicts["name"])data = [1,2,3]print(data[100])# 2.处理异常
except (IndexError,KeyError) as error:print(f"可能会发生异常.=={error}")
捕获所有异常
要知道的是,Exception是表示所有程序异常类的父类,即使用Exception可以表示一切异常。
捕获所有异常语法:
try:可能发生异常的代码
except Exception[ as 变量]:当捕获到该异常类型时,执行的代码
说明:
Exception的首字母要大写。
# 1.可能会发生异常的代码
# 2.捕获所有异常
try:data = [1, 2, 3]print(data[100])dicts = {}print(dicts["name"])
except Exception as error:print(f"发生了异常信息...{error}")
print("hello world..")# 1.可能会发生异常的代码
# 2.捕获所有异常
try:data = [1, 2, 3]print(data[100])dicts = {}print(dicts["name"])
except Exception as error:print(f"发生了异常信息...{error}")
print("hello world..")
在捕获异常过程中,有两个关键字else、finally需要注意:
else:表示如果没有异常时,要执行的代码;
finally:表示的是无论是否有异常,都要执行的代码。
当把else、finally都放入到捕获异常中,语法:
try:可能发生异常的代码
except 异常类型:当捕获到该异常类型时,执行的代码
else:没有异常信息时,执行的代码
finally:无论如何,都会执行的代码
例如,一起来完成:
# 1.制造异常
# 2.处理 指定异常
try:data = [1, 2, 3]print(data[100])# print(data[0])
except IndexError:print("====1====已发生异常信息!")
else: # 3.else:没有发生异常时,处理的事情print("没有发生异常时,才会执行代码!!")
finally:# 4.finally:文件必须关闭print("无论如何,都会执行finally!!")
异常具有传递性
# 1.func()
def func():print("==========A============")try:datas = [1,2,3]print(datas[100])except Exception:# 日志、埋点? -->采集print("发生了异常信息...") # 后台开发print("==========B============")# 2.test()
def test():print("********1***********")func()print("********2***********")# 3.调用test()
test()
总结:
(1)当一段可能发生异常的代码,发生了异常时,若不处理,则会传递给调用处;
(2)注意:标准的异常处理方式是()。A、捕获异常; B、抛出异常;
解析:A 捕获异常和 B 抛出异常都是异常处理机制中的重要环节,单独选一个都不太准确。但相对来说,捕获异常可以在局部对异常进行处理,保证程序的稳定性,在一些情况下更为常用。
综上所述,没有绝对标准的单一答案,需根据具体情况综合运用这两种方式进行异常处理。
相关文章:
Python基础知识 (九)os模块、异常、异常的传递性
目录 OS模块 目录的具体操作 什么是异常 异常常见处理方式 异常分类: 捕获一个指定异常 捕获多个异常 捕获所有异常 异常具有传递性 OS模块 在Python中,os模块的常用函数分为两类: (a)通过os.path调用的函数…...
鸿蒙手势交互(三:组合手势)
三、组合手势 由多种单一手势组合而成,通过在GestureGroup中使用不同的GestureMode来声明该组合手势的类型,支持顺序识别、并行识别和互斥识别三种类型。 GestureGroup(mode:GestureMode, gesture:GestureType[]) //- mode:为GestureMode枚…...
【计算机方向】中科院二区TOP神刊!国人发文友好,刊文量高,录用容易!
期刊解析 🚩本 期 期 刊 看 点 🚩 中科院二区TOP期刊! 审稿友好,IF4.8,自引率6.2% 最新年度发文530。 今天小编带来计算机领域SCI快刊的解读! 如有相关领域作者有意投稿,可作为重点关注&am…...
Stable Diffusion 保姆级教程
1. 引言 近年来,Stable Diffusion 成为了图像生成领域的热门技术,它是一种基于扩散模型的生成模型,可以通过输入简单的文本描述生成高质量的图像。相比传统的生成对抗网络(GAN),Stable Diffusion 更具稳定…...
踩坑记录:adb修改settings数据库ContentObserver无回调
在Android 14版本开发过程中遇到一个,通过adb修改settings数据库,发现生效但是监听的ContentObserver无回调 以背光亮度值调节为例 adb shell settings put system screen_brightness 18 调节亮度值到指定值,修改完后查看 adb shell set…...
JAVA毕业设计183—基于Java+Springboot+vue的旅游小程序系统(源代码+数据库)
毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvue的旅游小程序系统(源代码数据库)183 一、系统介绍 本项目前后端不分离,分为用户、管理员两种角色 1、用户: 注册、登录、公告信息(…...
[大语言模型] 情感认知在大型语言模型中的近期进展-2024-09-26
[大语言模型] 情感认知在大型语言模型中的近期进展-2024-09-26 论文信息 Title: Recent Advancement of Emotion Cognition in Large Language Models Authors: Yuyan Chen, Yanghua Xiao https://arxiv.org/abs/2409.13354 情感认知在大型语言模型中的近期进展 《Recent A…...
WiFi无线连接管理安卓设备工具:WiFiADB
介绍 WiFi ADB 使您能够通过 WiFi TCP/IP 连接直接在设备上轻松调试和测试 Android 应用,无需使用 USB 数据线。在启用 WiFi 上的 ADB 后,打开控制台将电脑连接到设备。 手机和电脑在同一个WiFi然后电脑上运行adb connect x.x.x.x:x命令即可 下载 谷…...
Django项目配置日志
需求 在Django项目中实现控制台输出到日志文件,并且设置固定的大小以及当超过指定大小后覆盖最早的信息。 系统日志 使用Django自带的配置,可以自动记录Django的系统日志。 可以使用logging模块来配置。下面是一个完整的示例代码,展示了如…...
在IntelliJ IDEA中设置文件自动定位
当然,以下是一个整理成博客格式的内容,关于如何在IntelliJ IDEA中设置文件自动定位功能。 在IntelliJ IDEA中设置文件自动定位 背景 最近由于公司项目开发的需求,我从VSCode转到了IntelliJ IDEA。虽然IDEA提供了许多强大的功能,…...
机器学习笔记 - week6 -(十一、机器学习系统的设计)
11.1 首先要做什么 在接下来的视频中,我将谈到机器学习系统的设计。这些视频将谈及在设计复杂的机器学习系统时,你将遇到的主要问题。同时我们会试着给出一些关于如何巧妙构建一个复杂的机器学习系统的建议。下面的课程的的数学性可能不是那么强…...
对c语言中的指针进行深入全面的解析
1.普通的指针: 实际上指针就是存放地址的变量,eg: int a10; int *p&a; 拆分一下int *中的*说明p是一个指针,int是它所指向的类型; 2.字符串指针和字符串数组 char*str1"abcd"; 先看这一个,这个就是一个字符串…...
xxl-job 适配达梦数据库
前言 在数字化转型的浪潮中,任务调度成为了后端服务不可或缺的一部分。XXL-JOB 是一个轻量级、分布式的任务调度框架,广泛应用于各种业务场景。达梦数据库(DM),作为一款国内领先的数据库产品,已经被越来越…...
Linux 配置与管理 SWAP(虚拟内存)
Linux 配置与管理 SWAP(虚拟内存) 一、作用二、创建交换文件(以创建一个2GB的交换文件为例)1. 创建交换文件2. 设置文件权限2.1. **关于 sudo chmod 600 /root/swapfile 是否一定要执行**2.2. **关于其他用户启动是否没权限用到交换分区** 3.…...
yolo自动化项目实例解析(七)自建UI--工具栏选项
在上一章我们基本实现了关于预览窗口的显示,现在我们主要完善一下工具栏菜单按键 一、添加工具栏ui 1、配置文件读取 我们后面要改的东西越来越多了,先加个变量文件方便我们后面调用 下面我们使用的config.get意思是从./datas/setting.ini文件中读取关键…...
贝锐洋葱头浏览器随时随地访问教务系统,轻松搞定选课
教育网的“拥堵”早已是老生常谈,学生数量庞大、上网时间集中、带宽有限,导致网络速度慢。尤其是从外部网络访问教育网时,更是因为跨运营商的缘故变得缓慢。 而学校内网也是类似的情况,课余时间和上课时间的网络使用情况差别巨大…...
django drf to_internal_value
使用场景 用于将接收到的输入转换为内部可用的数据形式; 例子 to_internal_value主要在反序列化时用到,其作用处理API请求携带的数据,对其进行验证并转化为Python的数据类型。 假如我们的API客户端通过请求提交了额外的数据,比…...
map(lambda x: x[0], sorted(count.items(), key=lambda x: (-x[1], x[0]))[:n])
被解析的代码行 map(lambda x: x[0], sorted(count.items(), keylambda x: (-x[1], x[0]))[:n])假设的输入 假设我们有以下的 count 字典,其中包括一些字符串及其对应的计数: count {apple: 3,banana: 1,orange: 2,grape: 2 }1. count.items() 首先…...
灰度重心法求取图像重心
1 概述 灰度重心法(Gray-scale Center of Mass Method)是一种在图像处理和计算机视觉中常用的方法。这种方法主要用于确定图像中物体的质心或重心位置,特别是在灰度图像中。 灰度重心法的基本思想是,根据图像中每个像素的灰度值及其位置信息来计算一个加权重心,这个重心…...
Go Mail设置指南:如何提升发送邮件效率?
Go Mail使用技巧与配置教程?如何用Go Mail实现发信? 随着工作负载的增加,如何高效地发送和管理邮件成为了许多职场人士面临的挑战。AokSend将为您提供一份详细的Go Mail设置指南,帮助您提升发送邮件的效率,让您的邮件…...
NEURAL MASK效果展示:水墨画/油画/素描等艺术风格图像分割能力
NEURAL MASK效果展示:水墨画/油画/素描等艺术风格图像分割能力 1. 艺术级图像分割新体验 在图像处理领域,精准的主体分割一直是创作者们的核心需求。传统的抠图工具在面对复杂艺术风格图像时往往力不从心——水墨画的晕染边缘、油画的笔触纹理、素描的…...
GLM-4V-9B GPU高效利用:通过dtype对齐+4-bit量化实现A10G 24GB满载运行
GLM-4V-9B GPU高效利用:通过dtype对齐4-bit量化实现A10G 24GB满载运行 1. 引言 最近在折腾多模态大模型本地部署的朋友,可能都遇到过类似的问题:模型参数动辄几十上百亿,显存要求高得吓人,好不容易找到个能在消费级显…...
荣耀XD21路由器IPTV设置指南:不用VLAN交换机实现单线复用
荣耀XD21路由器单线复用实战:无需VLAN交换机实现IPTV与网络并行传输 客厅弱电箱仅预留单根网线却需要同时承载IPTV和无线网络信号——这是许多家庭网络改造中遇到的典型难题。传统方案往往依赖价格不菲的VLAN交换机实现单线复用,但通过荣耀XD21路由器的隐…...
避坑指南:用conda管理TensorFlow环境时如何避免FailedPreconditionError日志目录冲突
避坑指南:用conda管理TensorFlow环境时如何避免FailedPreconditionError日志目录冲突 在深度学习项目开发中,TensorFlow作为主流框架之一,其环境配置的稳定性直接影响开发效率。许多开发者习惯使用conda进行Python环境管理,但在Te…...
Windows下用MSYS2编译axel多线程下载工具的保姆级教程(附常见错误解决方案)
Windows下MSYS2编译axel多线程下载工具全指南 如果你厌倦了商业下载工具的臃肿和限制,又对Python多线程下载的稳定性不满,那么编译一个原生的axel多线程下载工具可能是最佳选择。本文将带你从零开始在Windows环境下,通过MSYS2完整编译axel&a…...
Java微服务Istio迁移踩坑实录(17个高频Failure Case全复盘)
第一章:Java微服务Istio 1.20迁移全景认知Istio 1.20 是一个面向生产就绪场景的重要版本,其核心变化聚焦于控制平面简化、xDS 协议增强与 Java 微服务生态的深度协同。该版本正式弃用 Istiod 中的 Pilot、Galley 和 Citadel 组件,统一由 isti…...
QWEN-AUDIO效果分享:支持粤语拼音输入与粤语语音合成的扩展能力
QWEN-AUDIO效果分享:支持粤语拼音输入与粤语语音合成的扩展能力 1. 语音合成技术的新突破 QWEN-AUDIO智能语音合成系统基于通义千问Qwen3-Audio架构构建,这是一款真正具有"人类温度"的新一代语音合成系统。与传统TTS系统相比,它不…...
网盘直链下载助手:告别限速困扰,八大平台一键高速下载终极指南
网盘直链下载助手:告别限速困扰,八大平台一键高速下载终极指南 【免费下载链接】Online-disk-direct-link-download-assistant 可以获取网盘文件真实下载地址。基于【网盘直链下载助手】修改(改自6.1.4版本) ,自用&…...
人形机器人强化学习实战:从奖励设计到PPO算法优化
1. 人形机器人强化学习入门:为什么奖励设计是关键 第一次接触人形机器人强化学习时,我被一个简单问题困扰了很久:为什么同样的算法,换个任务就要重新调参?后来发现问题的核心在于奖励函数设计。就像教小孩学走路&#…...
ArtnetnodeWifi:WiFi嵌入式Art-Net DMX节点实现
1. ArtnetnodeWifi 项目概述ArtnetnodeWifi 是一个面向嵌入式平台的轻量级 Art-Net 协议实现库,专为 WiFi 连接的微控制器设计。其核心目标是将 ESP8266、ESP32、MKR1000(WiFi101)、Nano 33 IoT(WiFiNINA)等具备 WiFi …...
