Python笔记(四):异常处理机制与 open()
(一) 异常处理机制概述
就像日常生活中会遇到各种意外情况一样(例如:你可能考虑过如果中了500w该怎么做),代码运行过程中也会遇到这种意外情况,python提供了这么一种机制,处理意外情况(就像如果中了5百万你希望代码怎么做一样)。
注:不处理这种意外情况,代码就会崩溃,后面全部代码都将停止运行。
实际应用中,主要分为3步:
(1) 圈出你认为可能出异常的代码。
(2) 设置你认为可以忽略的异常类型。
(3) 异常出现时,你希望的处理方式。
异常类型和格式可查看:http://www.runoob.com/python/python-exceptions.html
(二) open
- open() 函数用于打开一个文件,创建一个 file 对象
the_file = open(‘测试.txt’)
参数及方法可参考:http://www.runoob.com/python/python-func-open.html
|
模式 |
描述 |
|
r |
以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
|
rb |
以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
|
r+ |
打开一个文件用于读写。文件指针将会放在文件的开头。 |
(三) 例子
(1) 新建一个文件 测试.txt,输入以下内容
张三:今天天气真好.
李四:是的,真的太好了。
张三:阳光明媚。
李四:鸟语花香。
王五:装逼现场:请带好安全帽
张三:难得好天气,今天就不偷懒了。
李四:能把乞讨说的这么高大上的也就只有你了。
分隔符
张三:难得好天气,今天就不偷懒了。
李四:能把乞讨说的这么高大上的也就只有你了。
(2) 使用open读取上面的文件,结合异常处理机制进行说明
try:
the_file = open(r'C:\Users\123456\Desktop\测试.txt',encoding='UTF-8')
for each_line
in the_file:
try:
(role,line_spoken) =
each_line.split(":",1)
#以:分割数据,参数1表示只分解为2部分。
#例如:分割第一行数据,就是 role = ‘张三’ line_spoken = 今天天气真好.
# 不设置这个参数就是尽可能分割,那么读取 王五:装逼现场:请带好安全帽
数据时会出错
#分割“分隔符”这行数据时会出现ValueError异常(因为没有 :),不忽略这个错误后面全部数据都会不能读取
print(role,end="")
print(" said"+":
",end="")
print(line_spoken,end="")
except ValueError:
# 出现ValueError时,直接输出 each_line的值
print(each_line,end="")
the_file.close()
except IOError:
#找不到文件时提示文件不存在
print("文件不存在!")
(四) 事先处理可能出现的错误 和 错误出现后再处理2种方式
(1)
实际上我们也可以事先处理可能出现的错误,通过下面的代码实现。
if not each_line.find(':') == -1:
# find() 找不到目标字符串时会返回 -1 ,not 取反
else:
print(each_line,end="")
(2) 但是存在的问题是,你可能需要写大量的逻辑代码去处理这种情况,这样功能代码可能只占极小的一部分,导致代码要实现的功能不清晰。通过异常处理机制就不存在这个问题,代码要实现的功能一目了然。
Python笔记(四):异常处理机制与 open()的更多相关文章
- C++学习笔记27:异常处理机制
一.异常处理机制基础 异常的定义 程序中可以检测的运行不正常的情况 异常处理的基本流程 某段程序代码在执行操作时发生特殊情况,引发一个特定的异常 另一段程序代码捕获该异常并处理它 二.异常的引发 th ...
- Java基础(四)-异常处理机制及其设计
本篇主要是记录自己所理解的Java异常处理机制(基于jdk1.7)以及怎么去处理和设计异常.还记得当初学习Java异常这块的时候都没怎么注意它的用途,以为就是简单的处理下异常,我避免程序出现这样错误就 ...
- python中的异常处理机制
python中的异常处理 1.什么是异常 异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在python中,错误触发的异 ...
- python正确使用异常处理机制
一.不要过度使用异常 不可否认,Python 的异常机制确实方便,但滥用异常机制也会带来一些负面影响.过度使用异常主要表现在两个方面: 把异常和普通错误混淆在一起,不再编写任何错误处理代码,而是以简单 ...
- 【Python笔记】异常处理
1 什么是异常 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行.一般情况下,在Python无法正常处理程序时就会发生一个异常.异常是Python对象,表示一个错误. 当Pytho ...
- guxh的python笔记四:迭代
1,可迭代对象iterable,迭代器iterator,生成器generator 可迭代对象iterable: 实现__iter__方法的类.__iter__方法返回iterator或者generat ...
- Python笔记(四)_字符串的方法
字符串的方法 []表示该参数时可选的,start和end参数表示范围 count(sub[, start[, end]]) 返回sub在字符串里边出现的次数 find(sub[, start[, en ...
- python笔记四
#!/usr/bin/env python3 from datetime import datetime, timedelta # datetime是模块,datetime模块还包含一个datetim ...
- Python try/except异常处理机制
1. use try, except, finally try: data=open('its.txt','w') print('its..', file=data) except: print('f ...
- python笔记四(dict/set/不可变对象)
一.dict 字典是包含key_value存储方式.在放进去的时候,必须根据key值Hash出value的存放位置,这样,取的时候才能根据key直接拿到value. dict的操作: d = {'Mi ...
随机推荐
- JAVA与DOM解析器提高(DOM/SAX/JDOM/DOM4j/XPath) 学习笔记二
要求 必备知识 JAVA基础知识.XML基础知识. 开发环境 MyEclipse10 资料下载 源码下载 sax.dom是两种对xml文档进行解析的方法(没有具体实现,只是接口),所以只有它们是无 ...
- docker namespaces
https://docs.docker.com/engine/security/userns-remap/#prerequisites 注:以下验证环境为centos7.5 docker 18.09. ...
- Linux配置多个Tomcat同时运行
Linux系统下怎样配置多个Tomcat同时运行呢,首先修改变量为第一个tomcat,然后修改第二个tomcat启动的脚本 1.修改环境变量 # vi /etc/profile ####### 工程1 ...
- 【详解】GrantedAuthority(已授予的权限)
前言 这篇是很久之前学习Spring Security整理的博客,发现浏览量都1000多了,一个赞都没有,那说明写得确实不怎么样,哈哈.应该很多初学者对这个接口存在疑问,特别是如果学习这个框架之前还了 ...
- Java 容器源码分析之1.7HashMap
以下内容基于jdk1.7.0_79源码: 什么是HashMap 基于哈希表的一个Map接口实现,存储的对象是一个键值对对象(Entry<K,V>): HashMap补充说明 基于数组和链表 ...
- elasticSearch6源码分析(9)ActionModule
1.ActionModule概述 /** * Builds and binds the generic action map, all {@link TransportAction}s, and {@ ...
- double转换为int以及浮点型相加损失精度问题
最近在做支付相关模块的业务,数据库字段却使用的是double类型,其实也行,只要计算不在sql语句中进行,也是没有问题的. 预先的类属性设置的是Double类型,自己算的时候发现小数相加会出现损失精度 ...
- LVS持久化与超时时间问题分析
前言 在上一篇文章<搭建DNS+LVS(keepAlived)+OpenResty服务器(Docker环境)>中,我搭建了dns+lvs+openresty+web集群:先来回顾一下架构图 ...
- .2-浅析webpack源码之打包后文件
先不进源码,分析一下打包后的文件,来一张图: 首先创建两个JS文件,内容如下: // config.js module.exports = { entry: './input.js', output: ...
- c++/c 获取cpp文件行号跟文件名
编译器内置宏: 先介绍几个编译器内置的宏定义,这些宏定义不仅可以帮助我们完成跨平台的源码编写,灵活使用也可以巧妙地帮我们输出非常有用的调试信息. ANSI C标准中有几个标准预定义宏(也是常用的): ...