python 异常之进阶操作
1、文件分析
下面来做一些文件分析操作,分析整本书的信息。
知识点:
- string.split():将字符串分解为列表。
- open(filename,‘rb’)或者open(filename,encoding = 'UTF-8'):防止出现文本格式不对(有中文),导致报错
split()方法例子:
下面进行分析下怎么分析一个文本:
1、下载个纯英文小说,自己百度一个,本文是的是英文小说《Crimes and Punishments》(《罪与罚》)
2、导入到和程序一个文件夹下
知识点:
try: <语句> #运行别的代码 except <名字>: <语句> #如果在try部份引发了'name'异常 except <名字>,<数据>: <语句> #如果引发了'name'异常,获得附加的数据 else: <语句> #如果没有异常发生
代码:
1 #异常进阶--分析文本 2 filename = 'Crimes_and_Punishments.txt' 3 4 #使用try...except...代码块,如果文件不存在就给出信息 5 try: 6 with open(filename,encoding = 'UTF-8')as f_obj: 7 # with open(filename,'rb')as f_obj: #方法2 8 Text_Informations = f_obj.read() #对文本进行读取 9 except FileNotFoundError: 10 print("Sorry,The " + filename + ' not exist') 11 else: 12 word = Text_Informations.split() 13 number_word = len(word) #计算列表word的字符串数量 14 print('Crimes_and_Punishments have ' + str(number_word) + ' words.')
执行结果:
Crimes_and_Punishments have 56502 words.
2、分析多个文件
怎么分析多个文件,怎么快速想要知道各个文本信息的内容?怎么快速调用?
可以使用之前学习的函数试下。
代码:
1 #多个文件分析 2 def filename(files): 3 4 #使用try...except...代码块,如果文件不存在就给出信息 5 try: 6 with open(files,encoding = 'UTF-8')as f_obj: 7 # with open(filename,'rb')as f_obj: #方法2 8 Text_Informations = f_obj.read() #对文本进行读取 9 except FileNotFoundError: 10 print("Sorry,The " + files + ' not exist') 11 else: 12 word = Text_Informations.split() 13 number_word = len(word) #计算列表word的字符串数量 14 print(str(files) + ' have ' + str(number_word) + ' words.') 15 16 filename('new_file.txt') 17 filename('new_file2.txt')
执行结果:
new_file.txt have 3 words.
new_file2.txt have 26 words.
3、出现问题时 一句话都不说。
其实就是使用了 “pass” 占位符。
#出现问题时一句话都不说 try: num = 5/0 except ZeroDivisionError: pass
这样执行时,就不会有任何报错信息。
python异常标准
常名称 | 描述 |
---|---|
BaseException | 所有异常的基类 |
SystemExit | 解释器请求退出 |
KeyboardInterrupt | 用户中断执行(通常是输入^C) |
Exception | 常规错误的基类 |
StopIteration | 迭代器没有更多的值 |
GeneratorExit | 生成器(generator)发生异常来通知退出 |
StandardError | 所有的内建标准异常的基类 |
ArithmeticError | 所有数值计算错误的基类 |
FloatingPointError | 浮点计算错误 |
OverflowError | 数值运算超出最大限制 |
ZeroDivisionError | 除(或取模)零 (所有数据类型) |
AssertionError | 断言语句失败 |
AttributeError | 对象没有这个属性 |
EOFError | 没有内建输入,到达EOF 标记 |
EnvironmentError | 操作系统错误的基类 |
IOError | 输入/输出操作失败 |
OSError | 操作系统错误 |
WindowsError | 系统调用失败 |
ImportError | 导入模块/对象失败 |
LookupError | 无效数据查询的基类 |
IndexError | 序列中没有此索引(index) |
KeyError | 映射中没有这个键 |
MemoryError | 内存溢出错误(对于Python 解释器不是致命的) |
NameError | 未声明/初始化对象 (没有属性) |
UnboundLocalError | 访问未初始化的本地变量 |
ReferenceError | 弱引用(Weak reference)试图访问已经垃圾回收了的对象 |
RuntimeError | 一般的运行时错误 |
NotImplementedError | 尚未实现的方法 |
SyntaxError | Python 语法错误 |
IndentationError | 缩进错误 |
TabError | Tab 和空格混用 |
SystemError | 一般的解释器系统错误 |
TypeError | 对类型无效的操作 |
ValueError | 传入无效的参数 |
UnicodeError | Unicode 相关的错误 |
UnicodeDecodeError | Unicode 解码时的错误 |
UnicodeEncodeError | Unicode 编码时错误 |
UnicodeTranslateError | Unicode 转换时错误 |
Warning | 警告的基类 |
DeprecationWarning | 关于被弃用的特征的警告 |
FutureWarning | 关于构造将来语义会有改变的警告 |
OverflowWarning | 旧的关于自动提升为长整型(long)的警告 |
PendingDeprecationWarning | 关于特性将会被废弃的警告 |
RuntimeWarning | 可疑的运行时行为(runtime behavior)的警告 |
SyntaxWarning | 可疑的语法的警告 |
UserWarning | 用户代码生成的警告 |