Python学习第十六篇——异常处理

在实际中,很多时候时候,我们并不能保证我们所写的程序是完美的。比如我们程序的本意是:用户在输入框内输入数字,并进行后续数学运算,即使我们提醒了用户需要输入数字而不是文本,但是有时会无意或者恶意输入字符串等我们意料之外的东西,但我们又不想让我们的程序崩溃,Python引入了一种“异常处理”机制,使得我们能够正确的处理这种意外:

比如下面这段代码:想读取文件的内容,但假如所要读取的文件不存在应该怎么办:

 1 def file_read(filename):
 2     try:
 3         with open(filename,‘r‘) as f_obj:
 4             conts = f_obj.read()
 5     except FileNotFoundError:
 6         print("The file ‘"+filename+"‘ does not exist!")
 7         #pass
 8     else:
 9         print(conts)
10
11 filenames = [‘cats.txt‘,‘dogs.txt‘]
12 for filename in filenames:
13     file_read(filename)
14         

关于代码的具体细节不再描述,仅仅想说明:Python提供了很多的“异常处理”机制,可以方便我们去处理异常情况,暂时不需要记住他们,但需要明白Python具有这样的机制,并且会灵活运用。

原文地址:https://www.cnblogs.com/shaonianpi/p/9542615.html

时间: 2024-10-24 17:12:09

Python学习第十六篇——异常处理的相关文章

Python 学习 第十六篇:networkx

networkx是Python的一个包,用于构建和操作复杂的图结构,提供分析图的算法.图是由顶点.边和可选的属性构成的数据结构,顶点表示数据,边是由两个顶点唯一确定的,表示两个顶点之间的关系.顶点和边也可以拥有更多的属性,以存储更多的信息. 对于networkx创建的无向图,允许一条边的两个顶点是相同的,即允许出现自循环,但是不允许两个顶点之间存在多条边,即出现平行边. 边和顶点都可以有自定义的属性,属性称作边和顶点的数据,每一个属性都是一个Key:Value对. 一,创建图 在创建图之前,需要

python学习[第十二篇] 数据类型之 集合

python学习[第十二篇] 数据类型之 集合 集合概念 python中集合是一组无序排列的哈希值.集合分为两种可变集合(set)和不可变集合(frozenset) 对可变集合可以修改和删除元素,对于不可变集合不允许.可变集合是不可以哈希的,因此既不能用作字典的键,也不能做其他集合的元素. 集合的增删改查 集合的创建于赋值 集合与列表([]) 和字典({})不同,集合没有特别的语法格式.列表和字典可以通过他们自己的工厂方法创建,这也是集合的唯一的创建方式.set()和frozenset() #创

[Python笔记]第十六篇:web框架之Tornado

Tornado是一个基于python的web框架,xxxxx 安装 python -m pip install tornado 第一个Tornado程序 安装完毕我们就可以新建一个app.py文件,放入下面的代码直接运行就可以了,然后在浏览器访问127.0.0.1:8888 import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.writ

python学习笔记十六 django深入学习一

django 请求流程图 django 路由系统 在django中我们可以通过定义urls,让不同的url路由到不同的处理函数 from . import views urlpatterns = [ url(r'^articles/2003/$', views.special_case_2003), #精确匹配 url(r'^articles/([0-9]{4})/$', views.year_archive), #动态路由 url(r'^articles/([0-9]{4})/([0-9]{2

Python学习(十六)内置函数,递归

1.递归 def test1(): num=int(input('输入数字')) if num%2==0: #判断输入数字是不是偶数 return True #是偶数,程序退出,返回true print('不是偶数请重新输入') return test1() #不是偶数的话继续调用自己,输入值 print(test1()) 递归的效率不高,最多递归999次 2.内置函数 python自带的函数 id()#看内存地址type()#看数据类型print()#打印input()#输入list() #转

Python学习笔记十六_模块结构调整

一.什么是模块结构调整 当一个脚本中有大量的配置.方法及接口时,脚本往往显得十分臃肿.为了代码更易读,可以将一个繁杂的脚本根据不同的功能放在不同的文件夹中分类管理,即模块结构调整. 二.模块结构调整实例 下面根据一个具体的例子来看一下如何拆分调整代码 1.根据正常人的思维写代码完成功能 代码需求: (1) 注册接口: (a) 写一个注册接口,密码存成密文 (b) 数据存到redis,redis的key用string类型 (c) Amy  7869d295e566295b51eec5d6bed67

Python 学习日记第六篇 -- 深浅拷贝

深浅拷贝: 1.字符串和数字 import copy #浅拷贝 copy.copy() #深拷贝 copy.deepcopy() ###################################################################################### a1 = "string" #a1 = 11 a2 = a1 a3 = copy.copy(a1) a4 = copy.deepcopy(a1) print(id(a1)) print(

python学习笔记(十六) - ORM框架(SQLAlchemy)

所谓的ORM就是Object-Relational Mapping,把关系数据库的表结果映射到对象上. 1. 安装SQLAlchemy: easy_install sqlalchemy 2. 导入SQLAlchemy,并初始化DBSession: # 导入: from sqlalchemy import Column, String, create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declara

Python学习【第六篇】运算符

运算符 算数运算: 1 a = 21 2 b = 10 3 c = 0 4 5 c = a + b 6 print ("1 - c 的值为:", c) 7 8 c = a - b 9 print ("2 - c 的值为:", c) 10 11 c = a * b 12 print ("3 - c 的值为:", c) 13 14 c = a / b 15 print ("4 - c 的值为:", c) 16 17 c = a %