- 异常
在程序运行的过程中,不可避免的会出现一些错误。比如 使用了不存的索引,引用了没有赋值的变量… 这些错误我们就称之为异常
程序一旦出现异常,会导致程序立即终止。异常后面的代码都不会执行 - 处理异常
程序出现异常,目的并不是让我们的程序终止,而是希望我们在出现异常的时候,能够编写响应的代码来对异常进行处理
try 语句:
语法:
try:
代码块(可能出现错误的语句)
except 异常类型 as 异常名:
代码块(出现错误以后的处理方式)
except 异常类型 as 异常名:
代码块(出现错误以后的处理方式)
except 异常类型 as 异常名:
代码块(出现错误以后的处理方式)
else:
代码块(没有出现错误的语句)
finally:
代码块(该代码总会执行)
在未知错误类型的时候:
try:
print(6/0)
except:
print("语句错误")
else:
print("执行完成")
屏幕输出:除数不能为0
在已知错误类型的时候:
(如果出现的错误 跟 except中的错误不相同,则直接报错,不会执行except中的代码)
try:
print(6/0)
except ZeroDivisionError as a:
print(a)
屏幕输出:division by zero
(except如果指定异常 只会捕获指定的异常)
在未知情况下,想知晓错误类型,和错误内容,此时可以用到一个关键字
Exception
try:
print(6/0)
except Exception as a:
print(a,type(a))
屏幕输出:division by zero <class 'ZeroDivisionError'>
- 异常的传播
当函数中出现异常的时候,如果在函数中对异常进行了处理,则异常不会在继续传播,如果在函数中没有对异常进行处理,则异常会继续向函数调用处传播
def fn():
print(6/0)
fn()
控制台显示:
Traceback (most recent call last):
File "......", line 3, in <module>
fn()
File "......", line 2, in fn
print(6/0)
ZeroDivisionError: division by zero
- 文件
打开文件:
语法:open(文件路径)
返回值:当前打开的文件作为对象返回
例如打开一个位于C:\Users\xiao_weiyu\Desktop\资料.txt 的文本文档
file_name = "C:\Users\xiao_weiyu\Desktop\资料.txt "
file_one = open(file_name)
关闭文件:
语法:文件对象.close( )
(关闭文件,是为了节省空间,优化程序)
file_name = "test.txt"
file_one = open(file_name)
file_one.close()
这样关闭文件容易,当代码较多时容易遗漏close()
更简洁的方式:
with as
语法:with open(文件路径) as 接收文件变量:
file_name = "test.txt"
with open(file_name) as file_one:
content = file_one.read()
执行完代码块 程序会自动关闭文件
文件写入:
open()函数来进行文件的操作(读 写 追加),如果不指定操作类型,则默认是读取文件
w 表示是可写的。如果文件不存在,它会帮我们来创建一个文件并写入内容。如果文件存在则会覆盖原文件的内容
a 表示追加内容
例如在当前目录创建一个名为:test.txt 的文本文档,并写入内容:abc
write( ) 方法 用来写入数据
语法:文件对象.write(内容)
file_name = "test.txt"
with open(file_name,"w") as file_one:
file_one.write("abc")
文件读取
(open()函数 默认为读取操作 如不指定操作)
调用open()来打开一个文件的时候,可以将文件分为两种类型
第一种 是纯文本(使用utf-8等编写的文本文件)
第二种 是二进制文件(音频、视频、图片…)
open()函数它默认打开文件是以纯文本的形式
例如读取一个名为:test.txt 文本文档 内容为:你好世界
内容为中文,此时需要标明解码格式为:utf-8
read( ) 方法 用来读取数据
语法:文件对象.read(内容长度) 默认内容长度:-1 表示全部读取
file_name = "test.txt"
with open(file_name,encoding="utf-8") as file_one:
content = file_one.read()
较大文件读取:
(如果一个文件内容过多,一次性读取完所有内容,很容易导致电脑死机)
read( ) 可以接受一个size作为参数,该参数用来指定读取字符的数量
默认值为-1 读取全部的内容
例如先读100个字符(字符和中文都算作一个)
file_name = "test.txt"
with open(file_name,encoding="uft-8") as file_one:
file_one.read(100)
readline( )
作用:每次只读取一行
如果想每次读取一行,直到读取完,才截止,可以这样写
file_name = "test.txt"
with open(file_name,encoding="utf-8") as file_one:
while True:
content = file_one.readline()
if not content:
break
else:
print(content,end="")
readlines( )
作用:读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素,但读取大文件会比较占内存。
(每行的\n也会被记录)
文件内容:
#你好世界
#你好python
#你好c语言
#你好java
file_name ="test.txt"
with open(file_name,encoding="utf-8") as file_one:
content = file_one.readlines()
此时content:['你好世界\n', '你好python\n', '你好c语言\n', '你好java']