python08篇 发邮件和异常处理
2024-09-08 06:01:00
一、发邮件
import yamail smtp = yamail.SMTP(host='smtp.qq.com', # 改成自己邮箱的服务器即可,其他的比如smtp.163.com
user='651*****@qq.com', # 发送邮箱用的用户名
password='') # 如果是163、qq等免费邮箱的话需要授权码,自己公司的邮箱,一般都使用密码.授权码需要再邮箱的设置-帐户-POP3/SMTP服务(开启服务)
smtp.send(to=['511****@qq.com'], # 发送给谁,如果是多少,就在list中添加多个
subject='请查收', # 邮件主题
cc=['285*****@qq.com'], # 抄送给谁,如果是多少,就在list中添加多个
contents='邮件正文', # 邮件正文
attachments=['笔记.txt']) # 附件,如果有多个附件,写list中
smtp.close()
二、异常以及异常处理
2.1 异常
运行期检测到的错误被称为异常。
大多数的异常都不会被程序处理,都以错误信息的形式展现在这里:
>>> 10 * (1/0) # 0 不能作为除数,触发异常
Traceback (most recent call last):
File "<stdin>", line 1, in ?
ZeroDivisionError: division by zero
>>> 4 + spam*3 # spam 未定义,触发异常
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'spam' is not defined
>>> '2' + 2 # int 不能与 str 相加,触发异常
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
2.2 异常处理
try/except
异常捕捉可以使用 try/except 语句。
try 语句按照如下方式工作;
首先,执行 try 子句(在关键字 try 和关键字 except 之间的语句)。
如果没有异常发生,忽略 except 子句,try 子句执行后结束。
如果在执行 try 子句的过程中发生了异常,那么 try 子句余下的部分将被忽略。如果异常的类型和 except 之后的名称相符,那么对应的 except 子句将被执行。
如果一个异常没有与任何的 except 匹配,那么这个异常将会传递给上层的 try 中。
一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。
处理程序将只针对对应的 try 子句中的异常进行处理,而不是其他的 try 的处理程序中的异常。
try/except 语句还有一个可选的 else 子句,如果使用这个子句,那么必须放在所有的 except 子句之后。
else 子句将在 try 子句没有发生任何异常的时候执行。
try-finally 语句无论是否发生异常都将执行最后的代码。
import traceback
try:
'1' + 2
2 / 0
except TypeError as e: # e 具体的错误信息
print(e)
print('出错了')
except ZeroDivisionError as e:
print(e)
except IndexError :
print('下标错误')
except KeyError as e:
print(e)
except FileNotFoundError as e:
print('文件找不到')
except Exception as e: # Exception 是所有异常的基类,只要出现异常,都能捕捉,但不能确定是具体哪种异常
# traceback.print_exc() # 打印堆栈信息
print('自己加的', traceback.format_exc()) # 把堆栈信息写入到日志中用此方法
print('出异常了', e)
else:
print('没有出异常')
# 不管出不出异常,都执行finally中的代码.实际场景使用:比如关闭文件,关闭数据库连接等等
finally:
print('不管出不出异常,都执行finally中的代码')
最新文章
- awk分隔符设置技巧
- sqlite3 not found问题解决方法
- 如何防止ElasticSearch集群出现脑裂现象(转)
- //暴力打开某个APP iOS 私有API LSApplicationWorkspace
- 加密算法使用(五):RSA使用全过程
- linux shell pushd popd dirs命令
- sicily 无路可逃?(图的DFS)
- 在wp中,使用NavigationService.Navigate导航页面出现错误
- error2
- javascript prompt示例
- 牛客小白月赛1 A-简单题
- poj1182-食物链-带权并查集-种类并查集
- Android用AlarmManager实现后台任务-android学习之旅(63)
- Web系统中Mic设备的应用实例
- springboot 集成swagger
- docker系列(1)- 配置
- 详解区块链P2P网络
- Fiddler 只取所需
- django学习~models之查询
- C++ Boost库简介(转载)
热门文章
- 使用 Bridge to Kubernetes 简化云端开发
- 201871030138-杨蕊媛 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
- React-setState的那些事儿
- TensorRT 数据格式说明
- 教你三种jQuery框架实现元素显示及隐藏动画方式
- 编译原理-文法(G)和语言(L)
- Lombok——一款Java构建工具,“懒人”必备!!(idea版)
- 【NX二次开发】Block UI 微定位
- DOS命令行(2)——Windows磁盘维护与管理
- Pytest学习笔记4-assert断言