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

关于“Python”的核心知识点整理大全25

目录

10.3.4 else 代码块、

10.3.5 处理 FileNotFoundError 异常

alice.py

在这个示例中,try代码块引发FileNotFoundError异常,因此Python找出与该错误匹配的 except代码块,并运行其中的代码。最终的结果是显示一条友好的错误消息,而不是traceback:

10.3.6 分析文本

10.3.7 使用多个文件

word_count.py

10.3.8 失败时一声不吭

关于“Python”的核心知识点整理大全24-CSDN博客

往期快速传送门👆(在文章最后):

感谢大家的支持!欢迎订阅收藏!专栏将持续更新!


10.3.4 else 代码块、

通过将可能引发错误的代码放在try-except代码块中,可提高这个程序抵御错误的能力。错 误是执行除法运算的代码行导致的,因此我们需要将它放到try-except代码块中。这个示例还包 含一个else代码块;依赖于try代码块成功执行的代码都应放到else代码块中:

print("Give me two numbers, and I'll divide them.")
print("Enter 'q' to quit.")
while True:first_number = input("\nFirst number: ")if first_number == 'q':breaksecond_number = input("Second number: ")
1 try:answer = int(first_number) / int(second_number)
2 except ZeroDivisionError:print("You can't divide by 0!")
3 else:print(answer)

我们让Python尝试执行try代码块中的除法运算(见1),这个代码块只包含可能导致错误的 代码。依赖于try代码块成功执行的代码都放在else代码块中;在这个示例中,如果除法运算成 功,我们就使用else代码块来打印结果(见2)。 except代码块告诉Python,出现ZeroDivisionError异常时该怎么办(见3)。如果try代码块因除零错误而失败,我们就打印一条友好的消息,告诉用户如何避免这种错误。程序将继续运行, 用户根本看不到traceback:

Give me two numbers, and I'll divide them.
Enter 'q' to quit.
First number: 5
Second number: 0
You can't divide by 0!
First number: 5
Second number: 2
2.5
First number: q

try-except-else代码块的工作原理大致如下:Python尝试执行try代码块中的代码;只有可 能引发异常的代码才需要放在try语句中。有时候,有一些仅在try代码块成功执行时才需要运行 的代码;这些代码应放在else代码块中。except代码块告诉Python,如果它尝试运行try代码块中 的代码时引发了指定的异常,该怎么办。 通过预测可能发生错误的代码,可编写健壮的程序,它们即便面临无效数据或缺少资源,也 能继续运行,从而能够抵御无意的用户错误和恶意的攻击。

10.3.5 处理 FileNotFoundError 异常

使用文件时,一种常见的问题是找不到文件:你要查找的文件可能在其他地方、文件名可能 不正确或者这个文件根本就不存在。对于所有这些情形,都可使用try-except代码块以直观的方 式进行处理。

我们来尝试读取一个不存在的文件。下面的程序尝试读取文件alice.txt的内容,但我没有将 这个文件存储在alice.py所在的目录中:

alice.py
filename = 'alice.txt'
with open(filename) as f_obj:contents = f_obj.read() 

Python无法读取不存在的文件,因此它引发一个异常:

Traceback (most recent call last):File "alice.py", line 3, in <module>with open(filename) as f_obj:
FileNotFoundError: [Errno 2] No such file or directory: 'alice.txt' 

在上述traceback中,最后一行报告了FileNotFoundError异常,这是Python找不到要打开的文件时创建的异常。在这个示例中,这个错误是函数open()导致的,因此要处理这个错误,必须将 try语句放在包含open()的代码行之前:

filename = 'alice.txt'
try:with open(filename) as f_obj:contents = f_obj.read()
except FileNotFoundError:msg = "Sorry, the file " + filename + " does not exist."print(msg) 
在这个示例中,try代码块引发FileNotFoundError异常,因此Python找出与该错误匹配的 except代码块,并运行其中的代码。最终的结果是显示一条友好的错误消息,而不是traceback:
Sorry, the file alice.txt does not exist. 

如果文件不存在,这个程序什么都不做,因此错误处理代码的意义不大。下面来扩展这个示 例,看看在你使用多个文件时,异常处理可提供什么样的帮助。

10.3.6 分析文本

你可以分析包含整本书的文本文件。很多经典文学作品都是以简单文本文件的方式提供的, 因为它们不受版权限制。本节使用的文本来自项目Gutenberg(http://gutenberg.org/),这个项目提 供了一系列不受版权限制的文学作品,如果你要在编程项目中使用文学文本,这是一个很不错的 资源。

下面来提取童话Alice in Wonderland的文本,并尝试计算它包含多少个单词。我们将使用方 法split(),它根据一个字符串创建一个单词列表。下面是对只包含童话名"Alice in Wonderland" 的字符串调用方法split()的结果:

>>> title = "Alice in Wonderland"
>>> title.split()
['Alice', 'in', 'Wonderland']

方法split()以空格为分隔符将字符串分拆成多个部分,并将这些部分都存储到一个列表中。 结果是一个包含字符串中所有单词的列表,虽然有些单词可能包含标点。为计算Alice in Wonderland包含多少个单词,我们将对整篇小说调用split(),再计算得到的列表包含多少个元 素,从而确定整篇童话大致包含多少个单词:

filename = 'alice.txt'
try:with open(filename) as f_obj:contents = f_obj.read()
except FileNotFoundError: 
msg = "Sorry, the file " + filename + " does not exist."print(msg)
else:# 计算文件大致包含多少个单词
1 words = contents.split()
2 num_words = len(words)
3 print("The file " + filename + " has about " + str(num_words) + " words.")

我们把文件alice.txt移到了正确的目录中,让try代码块能够成功地执行。在Ø处,我们对变 量contents(它现在是一个长长的字符串,包含童话Alice in Wonderland的全部文本)调用方法 split(),以生成一个列表,其中包含这部童话中的所有单词。当我们使用len()来确定这个列表 的长度时,就知道了原始字符串大致包含多少个单词(见)。在处,我们打印一条消息,指 出文件包含多少个单词。这些代码都放在else代码块中,因为仅当try代码块成功执行时才执行 它们。输出指出了文件alice.txt包含多少个单词:

The file alice.txt has about 29461 words. 

这个数字有点大,因为这里使用的文本文件包含出版商提供的额外信息,但与童话Alice in Wonderland的长度相当一致。

10.3.7 使用多个文件

下面多分析几本书。这样做之前,我们先将这个程序的大部分代码移到一个名为 count_words()的函数中,这样对多本书进行分析时将更容易:

word_count.py
def count_words(filename):
1 """计算一个文件大致包含多少个单词"""
try:with open(filename) as f_obj:contents = f_obj.read()except FileNotFoundError:msg = "Sorry, the file " + filename + " does not exist."print(msg)else:# 计算文件大致包含多少个单词words = contents.split()num_words = len(words)print("The file " + filename + " has about " + str(num_words) +" words.")
filename = 'alice.txt'
count_words(filename) 

这些代码大都与原来一样,我们只是将它们移到了函数count_words()中,并增加了缩进量。 修改程序的同时更新注释是个不错的习惯,因此我们将注释改成了文档字符串,并稍微调整了一下措辞(见1)。

现在可以编写一个简单的循环,计算要分析的任何文本包含多少个单词了。为此,我们将要 分析的文件的名称存储在一个列表中,然后对列表中的每个文件都调用count_words()。我们将 尝试计算Alice in Wonderland、Siddhartha、Moby Dick和Little Women分别包含多少个单词,它们 都不受版权限制。我故意没有将siddhartha.txt放到word_count.py所在的目录中,让你能够看到这 个程序在文件不存在时处理得有多出色:

def count_words(filename):--snip--
filenames = ['alice.txt', 'siddhartha.txt', 'moby_dick.txt', 'little_women.txt']
for filename in filenames:count_words(filename) 

文件siddhartha.txt不存在,但这丝毫不影响这个程序处理其他文件:

The file alice.txt has about 29461 words.
Sorry, the file siddhartha.txt does not exist.
The file moby_dick.txt has about 215136 words.
The file little_women.txt has about 189079 words. 

在这个示例中,使用try-except代码块提供了两个重要的优点:避免让用户看到traceback; 让程序能够继续分析能够找到的其他文件。如果不捕获因找不到siddhartha.txt而引发的 FileNotFoundError异常,用户将看到完整的traceback,而程序将在尝试分析Siddhartha后停止运 行——根本不分析Moby Dick和Little Women。

10.3.8 失败时一声不吭

在前一个示例中,我们告诉用户有一个文件找不到。但并非每次捕获到异常时都需要告诉用 户,有时候你希望程序在发生异常时一声不吭,就像什么都没有发生一样继续运行。要让程序在 失败时一声不吭,可像通常那样编写try代码块,但在except代码块中明确地告诉Python什么都不 要做。Python有一个pass语句,可在代码块中使用它来让Python什么都不要做:

def count_words(filename):"""计算一个文件大致包含多少个单词"""try:--snip--except FileNotFoundError:
1 passelse:--snip--
filenames = ['alice.txt', 'siddhartha.txt', 'moby_dick.txt', 'little_women.txt']
for filename in filenames:count_words(filename)

相比于前一个程序,这个程序唯一不同的地方是 Ø 处 的 pass 语句。现在,出现 FileNotFoundError异常时,将执行except代码块中的代码,但什么都不会发生。这种错误发生时, 不会出现traceback,也没有任何输出。用户将看到存在的每个文件包含多少个单词,但没有任何 迹象表明有一个文件未找到:

The file alice.txt has about 29461 words.
The file moby_dick.txt has about 215136 words.
The file little_women.txt has about 189079 words.

pass语句还充当了占位符,它提醒你在程序的某个地方什么都没有做,并且以后也许要在这 里做些什么。例如,在这个程序中,我们可能决定将找不到的文件的名称写入到文件 missing_files.txt中。用户看不到这个文件,但我们可以读取这个文件,进而处理所有文件找不到 的问题。

关于“Python”的核心知识点整理大全24-CSDN博客

关于“Python”的核心知识点整理大全23-CSDN博客

关于“Python”的核心知识点整理大全22-CSDN博客

关于“Python”的核心知识点整理大全21-CSDN博客

关于“Python”的核心知识点整理大全20-CSDN博客

关于“Python”的核心知识点整理大全19-CSDN博客

关于“Python”的核心知识点整理大全18-CSDN博客

关于“Python”的核心知识点整理大全17-CSDN博客

Python:核心知识点整理大全16-笔记-CSDN博客

关于“Python”的核心知识点整理大全15-CSDN博客

关于“Python”的核心知识点整理大全14-CSDN博客

关于“Python”的核心知识点整理大全13-CSDN博客

关于“Python”的核心知识点整理大全12-CSDN博客

往期快速传送门👆(在文章最后):

感谢大家的支持!欢迎订阅收藏!专栏将持续更新!

相关文章:

关于“Python”的核心知识点整理大全25

目录 10.3.4 else 代码块、 10.3.5 处理 FileNotFoundError 异常 alice.py 在这个示例中&#xff0c;try代码块引发FileNotFoundError异常&#xff0c;因此Python找出与该错误匹配的 except代码块&#xff0c;并运行其中的代码。最终的结果是显示一条友好的错误消息&#x…...

代码随想录刷题题Day15

刷题的第十五天&#xff0c;希望自己能够不断坚持下去&#xff0c;迎来蜕变。&#x1f600;&#x1f600;&#x1f600; 刷题语言&#xff1a;C Day15 任务 ● 513.找树左下角的值 ● 112. 路径总和 113.路径总和ii ● 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历…...

软件设计师——信息安全(一)

&#x1f4d1;前言 本文主要是【信息安全】——软件设计师——信息安全的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304…...

git必须掌握:git远程变动怎么解决

如何已经指定了选择分支 那下面的分支名称可以省略 如果远程分支存在变动&#xff0c;通常 git 推送的流程如下&#xff1a; 首先&#xff0c;使用 git fetch 命令从远程仓库获取最新的分支信息和变动。 git fetch然后&#xff0c;可以使用 git merge 或者 git rebase 命令进…...

Python里的时间模块

time 模块 时间表示方式 时间戳 timestamp:表示的是从 1970 年1月1日 00:00:00 开始按秒计算的偏移量UTC(Coordinated Universal Time, 世界协调时)亦即格林威治天文时间,世界标准时间。在中国为 UTC+8 DST(Daylight Saving Time) 即夏令时;结构化时间(struct_time): …...

SCI一区级 | Matlab实现GWO-CNN-GRU-selfAttention多变量多步时间序列预测

SCI一区级 | Matlab实现GWO-CNN-GRU-selfAttention多变量多步时间序列预测 目录 SCI一区级 | Matlab实现GWO-CNN-GRU-selfAttention多变量多步时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现GWO-CNN-GRU-selfAttention灰狼算法优化卷积门控循环…...

C#学习相关系列之自定义遍历器

在C#中&#xff0c;自定义遍历器需要实现IEnumerable接口和IEnumerator接口。其中&#xff0c;IEnumerable接口包含一个GetEnumerator方法&#xff0c;该方法返回一个IEnumerator接口的实例&#xff0c;而IEnumerator接口包含Current、MoveNext和Reset方法。 IEnumerable&#…...

WPS没保存关闭了怎么恢复数据?3个方法,完成数据恢复!

“我今天在使用WPS时&#xff0c;突然有点急事出去了一趟&#xff0c;但是我忘记保存文档了&#xff0c;回来之后发现电脑自动关机了&#xff0c;我的文档也没了&#xff01;这可怎么办呢&#xff1f;有什么办法可以找回这些数据吗&#xff1f;” 在快节奏的工作中&#xff0c;…...

数据结构和算法-最小生成树(prim和krusakal)和最短路径问题(BFS和dijkastra和floyd)

文章目录 最小生成树总览生成树广度优先生成树深度优先生成树最小生成树Prim算法Kruskal算法Prim vs KrusakalPrim的实现Kruskal的实现 小结 最短路径问题单源最短路径问题BFS求无权图的单源最短路径小结Dijkastra算法算法时间复杂度不适用情况 每一对顶点的最短路径问题Floyd算…...

响应者链概述

响应者链 iOS事件的3大类型 Touch Events(触摸事件)Motion Events(运动事件&#xff0c;比如重力感应和摇一摇等)Remote Events(远程事件&#xff0c;比如用耳机上得按键来控制手机) 触摸事件 处理触摸事件的两个步骤 寻找事件的最佳响应者事件的响应在响应链中的传递 寻…...

ShenYu网关Http服务探活解析

文章目录 网关端服务探活admin端服务探活 Shenyu HTTP服务探活是一种用于检测HTTP服务是否正常运行的机制。它通过建立Socket连接来判断服务是否可用。当服务不可用时&#xff0c;将服务从可用列表中移除。 网关端服务探活 以divide插件为例&#xff0c;看下divide插件是如何获…...

基于dockerfile搭建LNMP

组件自定义IP所需组件nginx172.111.0.10nginxwordpressmysql172.111.0.20mysql-5.7.20php172.111.0.30php LNMP介绍 L&#xff1a;Linux平台&#xff0c;操作系统&#xff0c;另外桑组件的运行平台 N&#xff1a;nginx 提供前端页面 M&#xff1a;MySQL&#xff0c;开源关系的…...

基于VGG-16+Android+Python的智能车辆驾驶行为分析—深度学习算法应用(含全部工程源码)+数据集+模型(三)

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 数据预处理2. 模型构建3. 模型训练及保存1&#xff09;模型训练2&#xff09;模型保存 4. 模型生成1&#xff09;模型导入及调用2&#xff09;相关代码&#xff08;1&#xff09;布局文件&#xff08;2&#xff…...

springMVC-@RequestMapping

基本介绍 RequestMapping注解可以指定控制器/处理器的某个方法的请求的url, 示例 &#xff08;结合springMVC基本原理理解&#xff09; Controller public class UserHandler {RequestMapping(value "/login")public String login() {System.out.println("登…...

智能优化算法应用:基于树种算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于树种算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于树种算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.树种算法4.实验参数设定5.算法结果6.参考文献7.MA…...

web前端项目-影视网站开发

影视网站 本项目主要使用到了 HTML&#xff1b;CSS&#xff1b;JavaScript脚本技术&#xff1b;AJAX无刷新技术&#xff1b;jQuery等技术实现了动态影视网页 运行效果&#xff1a; 一&#xff1a;index.html <!DOCTYPE> <html lang"en"> <head>…...

QT:Unable to create a debugging engine.

debug跑不了&#xff1a; 报错&#xff1a;Unable to create a debugging engine. 参考&#xff1a; https://blog.csdn.net/u010906468/article/details/104716198 先检查是否安装了DEBUG插件 工具-》》选项 查看插件&#xff0c;如果没有的话&#xff0c;需要重新安装qt时…...

如何理解Rust语言中的“impl”关键字

在Rust编程语言中&#xff0c;impl是一个关键字&#xff0c;用于为类型实现方法和特性&#xff08;traits&#xff09;。impl关键字后面可以跟一个类型或者特性名称&#xff0c;然后在大括号中定义该类型或特性的具体实现。 当我们使用impl关键字为一个类型实现方法时&#xf…...

C++实现简单的猜数字小游戏

猜数字 小游戏介绍&#xff1a;猜数字游戏是令游戏机随机产生一个100以内的正整数&#xff0c;用户输入一个数对其进行猜测&#xff0c;需要你编写程序自动对其与随机产生的被猜数进行比较&#xff0c;并提示大了&#xff0c;还是小了&#xff0c;相等表示猜到了。如果猜到&…...

人工智能导论复习资料

题型 1、简答题&#xff08;5题&#xff09; 2、设计题 3、综合题 4、论述题&#xff08;10分&#xff09; 考点 第一章 1、人工智能的定义、发展&#xff1b; 2、人工智能的学派、认知观及其间的关系&#xff1b; 3、人工智能要素及系统分类&#xff1b; 4、人工智能的研究、…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...