导读:捕获异常的方法
#捕获异常 (格式)
'''
try:
执行语句、判断语句、单独变量等等
except 异常错误名: #输入多个错误,使用[ValueError,Error]间隔开来
如果try语句报错,则执行该语句部分
else:(可选语句)
如果上述try语句没有报错,则执行该语句部分
finally:(可选语句)(强制执行语句)
上述try语句无论是否报错,都要执行该执行的部分
#循环案例
''''''
for i in range(1,10):
print("你好")
print(i)
'''
try:
mobile = int(input('请输入正确的手机号'))
name = input("请输入姓名")
#案例
except ValueError:
print("请输入正确的手机号")
else:
print("手机号输入正确")
finally:
print("无论上述代码对错,均运行此语句")
干货:
print(u"文本") #Unicode的缩写,将UF-8文本
print(r"文本")#取消转义字符
路径中使用(D:\\Program Files (x86)\\KuGou\\nKGMusic\\abc.txt) #使用双斜杠(\\)效果与上述r相同
一、数据的读取
1、数据的读取
-
对文件操作之前需要用open()函数打开文件
#文件的创建
#a = open(r"F:\abc.txt","w") #新建文件(如果有,则覆盖原文件)
a = open(r"F:\abc.txt","r") #打开文件(如果没有,则提示文件未找到)
b = a.read() #打开文件
print(b) #将打开的文件打印
a.close() #关闭打开的文件(一定要关闭)
-
mode参数中的r指读出,w指写入
-
打开之后将返回一个文件对象(file object),后续对文件内数据的操作都是基于这个文件对象的方法(method)来实现的
-
对文件数据的读取是用的read()方法,read()方法将返回文件中的所有内容
-
用print打印所有内容会显示,记得每次用完文件后,都要关闭文件close()。否则,文件就会一直被Python占用,不能被其他进程使用
2、在read中,加入数字,可指定读取的字符数
-
#w:写入 可以往指定文件写入内容如果没有该文件,就重新创建文件,如果有该文件,就替换创建全新文件
-
#r:读取 读取指定文件内容,不可以修改,如果没有该文件,则提示文件未找到(filenot founderror)
-
content = f.read(5)
#b=a.readline() #读取第一行数据
#c=a.read() #读取剩余全部数据
d=a.readlines() #读取全部数据,把数据用列表的形式进行展示,包含换行转义字符
print(d)
a.close()
3、文本文件的读取
-
通过open()函数打开文件,返回文件对象
-
对文件对象进行读取操作,除了前面介绍的read()之外还有两种读取数据的方法:readline()是每次读入一条数据的方式,readlines()是一次性读入文件所有数据
a = open(r'F:\abc.txt','r')
b = a.readline() #读取第一行内容
print(b)
c = a.read() #读取剩余的全部内容
print(c)
a.close()
5、文本文件的读取(常用控件)
-
file.read([size]):size未指定则返回整个文件,如果文件大小>2倍内存则有问题,f.read()读到文件尾时返回""(空字串)。
-
file.readline():返回一行。
-
file.readlines([size]):返回包含size行的列表,size未指定则返回全部行。
-
for line in f: print line:通过迭代器访问。
-
f.write("hello\n"):如果要写入字符串以外的数据,先将他转换为字符串。
-
f.tell():返回一个整数,表示当前文件指针的位置(就是到文件头的比特数)。
-
f.seek(偏移量,[起始位置]):用来移动文件指针。
-
-偏移量:单位为比特,可正可负
-
-起始位置:0-文件头,默认值;1-当前位置;2-文件尾
-
f.close()关闭文件
6、常用的
模式 |
描述
|
r
|
以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
|
rb
|
以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
|
r+
|
打开一个文件用于读写。文件指针将会放在文件的开头。
|
rb+
|
以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
|
w
|
打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
|
Wb
|
以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
|
W+
|
打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
|
Wb+
|
以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
|
a
|
打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
|
ab
|
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
|
a+
|
打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
|
ab+
|
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
|
#文件的创建
#a = open(r"F:\abc.txt","w") #新建文件(如果有,则覆盖原文件)
a = open(r"F:\abc.txt","r") #打开文件(如果没有,则提示文件未找到)
b = a.read() #打开文件
print(b) #将打开的文件打印
a.close() #关闭打开的文件(一定要关闭)
#文件的写入
a = open(r'F:\abc.txt','w')
a.write("星星点灯照\n亮我的家园\n星星之火\n可以燎原")
a.close()
#读取文件数据
a = open(r'F:\abc.txt','r')
b = a.readline() #读取第一行内容
print(b)
c = a.read() #读取剩余的全部内容
print(c)
a.close()
#读取文件数据(循环语句)
a = open(r'F:\abc.txt','r')
for i in range(1,4): #循环读取第一至第四行数据
b = a.readline() #读取第一行的数据
print(b)
a.close()
作业:
#(2) 在D盘下创建一个文件Blowing in the wind.txt,即‘D:\Blowing in the wind.txt’
b = open(r'D:\Blowing in the wind.txt','w')
t1 = 'How many roads must a man walk down'
t2 = 'Before they call him a man'
t3 = 'How many seas must a white dove sail'
t4 = 'Before she sleeps in the sand'
t5 = 'How many times must the cannon balls fly'
t6 = "Before they're forever banned"
t7 = 'The answer my friend is blowing in the wind'
t8 = 'The answer is blowing in the wind'
b.write(t1+'\n'+t2+'\n'+t3+'\n'+t4+'\n'+t5+'\n'+t6+'\n'+t7+'\n'+t8+'\n')
b.close()
二、错误和异常(异常处理、抛出异常)
2.1 什么是异常?
-
异常处理就是我们在写 Python时,经常看到的报错信息,例如 Name Error、Type error 、ValueError等,这些都是异常。
-
异常是一个事件,该事件会在程序执行过程中发生,一般情况下,在python中无法处理程序时就会发生异常,当 Python脚本发生异常时,我们需要捕获并处理异常,否则程序就会终止执行。
2.2 try-except捕获异常
-
python的解释器可以捕获异常。不过等它捕获到,我们的程序也就结束了。所以我们要在 python解释器之前用自己的代码捕获这些异常处理掉。
-
注意:python的ty-except,还是java的ty-catch都只能捕获运行时异常。如果代码本身就是错的根本就不行更别谈怎么捕获异常
2.3 else关键字
-
为了避免try语句块过长。我们只把可能出现异常的语句写到try里面,如果我们希望没有出错的时候执行其他代码,可以写到else里面:
-
2.4 异常处理方式
2.5 finally清理
-
try语句有另种可选的finally从句,用于自定义一些尾清理工作。与else从句的区别在于:else语句只在没有异常发生的情况下执行,而 finally语句则不管异常发生与否都会执行。
2.6 抛出异常处理方式
-
在开发时,如果满足特定业务需求时,希望抛出异常,可以
-
创建一个 Exception的对象
-
使用 raise关键字抛出异常对象
2. 常见的错误和异常
异常名称
|
描述
|
BaseEXcepton
|
所有异常的基类
|
SystemExit
|
解释器请求退出
|
Kevboardnterrunt
|
用户中断执行(通常是输入^C)
|
Excepton
|
常规错误的基类
|
Stoplteration
|
迭代器没有更多的值
|
GeneratorExit
|
生成器(generaor)发生异常来通知退出
|
StandardError
|
所有的内建标准异常的基类
|
ArithmeticError
|
所有数值计算错误的基类
|
|
|
异常名称
|
描述
|
FloatingPointError
|
浮点计算错误
|
OverflowError
|
数值运算超出最大限制
|
ZeroDivisionError
|
除(或取模)零(所有数据类型)
|
AssertonError
|
断言语句失败
|
AttributeError
|
对象没有这个属性
|
EOFError
|
没有内建输入,到达EOF标记
|
EnvironmentError
|
操作系统错误的基类
|
IOError
|
输入/输出操作失败
|
异常名称
|
描述
|
OSError
|
操作系统错误
|
WindowsError
|
系统调用失败
|
importError
|
导入模块/对象失败
|
LookupError
|
无效数据查询的基类
|
indexError
|
序列中没有此索引(index)
|
KeyError
|
映射中没有这个键
|
MemoryError
|
内存溢出错误(对于Python解释器不是致命的)
|
NameError
|
未声明/初始化对象(没有属性)
|
异常名称
|
描述(加粗字体表示常用方法)
|
UnboundLocalError
|
访问未初始化的本地变量
|
ReferenceError
|
弱引用(Weak reference)试图访问已经垃圾回收了的对象
|
RuntmeError
|
一般的运行时错误
|
NotlmplementedError
|
尚未实现的方法
|
SyntaxError
|
Python语法错误
|
IndentationError
|
缩进错误
|
TabError
|
Tab和空格混用
|
SyStemError
|
一般的解释器系统错误
|
异常名称
|
描述
|
TypeError
|
对类型无效的操作
|
ValueError
|
传入无效的参数
|
UniCodeError
|
Unicode相关的错误
|
UnicodeDecodeError
|
Unicode解码时的错误
|
UniCodeEncOdeError
|
Unicode编码时错误
|
UnicodeTranSlateError
|
Unicode转换时错误
|
Warning
|
警告的基类
|
DeprecatOnWarning
|
关于被弃用的特征的警告
|
异常名称
|
描述
|
FutureWarinng
|
关于构造将来语义会有改变的警告
|
overflowWarning
|
旧的关于自动提升为长整型(long)的警告
|
PendingDeprecationWaning
|
关于特性将会被废弃的警告
|
RuntimeWarning
|
可疑的运行时行为(runtime behavior)的警告
|
SyntaxWarning
|
可疑的语法的警告
|
Usewarnng
|
用户代码生成的警告
|
评论已关闭!