Python异常和文件

  1. 异常
    在程序运行的过程中,不可避免的会出现一些错误。比如 使用了不存的索引,引用了没有赋值的变量… 这些错误我们就称之为异常
    程序一旦出现异常,会导致程序立即终止。异常后面的代码都不会执行
  2. 处理异常
    程序出现异常,目的并不是让我们的程序终止,而是希望我们在出现异常的时候,能够编写响应的代码来对异常进行处理

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'>


  1. 异常的传播
    当函数中出现异常的时候,如果在函数中对异常进行了处理,则异常不会在继续传播,如果在函数中没有对异常进行处理,则异常会继续向函数调用处传播
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

  1. 文件

打开文件
语法: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']

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值