python基础:异常处理和文件操作

一、异常处理

概念:

程序停止执行并且提示错误信息 这个动作,我们通常称之为 :抛出异常

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4AvgWJNr-1636782746718)(C:\Users\苏柒\AppData\Roaming\Typora\typora-user-images\image-20211113085503862.png)]

异常处理是我们在开发程序时,由于很难对所有的特殊情况都处理好,通过异常处理可以针对突发事件进行集中的处理,这样就可以保证程序的完整性和稳健性。

二、捕获异常

1.简单捕获异常语法

在这里插入图片描述

num = int(input("请输入一个整数:"))
#一条语句,当输入不是整数时会报错

#异常处理后的程序
try:
    #不能确定正确执行的代码
    num = int(input("请输入一个整数:"))
except:
    #错误的处理代码
    print("请输入正确的整数:")
    
print("-"*50)

当我们使用异常处理时,通过异常处理后,无论代码或程序是否有错,这个程序都能够执行下去,不会报错。

所以这里也会有一些不方便,就是无法知道自己是为什么出错

2.错误异常类型捕获

try:
    print(name)
except NameError:
    print("产生错误了")
   

try:
    print("---------------1")
    f = open("123.txt","r")
    print("---------------2")
    print(name)
except (NameError,IOError):        #将可能产生的所有异常类型,都放到下面的小括号中
    print("产生错误了")

发生错误的第一个单词就是我们的错误类型

当我们想要知道异常原因时,可以这么写:

try:
    print("---------------1")
    f = open("132.txt","r")
    print("---------------2")
    print(name)
except (NameError,IOError) as result:
    print("产生错误了")
    print(result)

输出result,得到异常结果

当我们无法预知是什么错误是,对于未知错误,我们统一用一个语法进行书写

try:
    print("---------------1")
    f = open("132.txt","r")
    print("---------------2")
    print(name)
except Exception as result:    #Exception可以承接任何错误
    print("产生错误了")
    print(result)

3.异常处理完整语法

try:
    #无法确定正确执行的代码
except Exception as result:
    #发生异常时所执行的代码
 finally:
    #无论是否出现异常,都会执行的代码

4.异常的传递

当在函数/方法执行出现异常,会将异常传递给函数/方法的调用一方

如果传递到主程序,仍然没有异常处理,程序才会被终止

提示:

在开发中,可以在主函数中增加异常捕获,而在主函数中调用的其他函数,只要出现异常,都会传递到主函数的异常捕获中,这样就不需要在代码中增加大量的异常捕获,能够保证代码的整洁

#异常的传递
def demo1():
    return int(input("输入整数:"))

def demo2():
    return demo1()
print(demo2())

在这里插入图片描述

当函数在运行的过程中,程序出现异常时,会一级一级的向上传递,如果没有发现异常处理,最后会发生错误

如果函数中语句出错,在每个函数中增加异常捕获是一件很不理智的行为

我们可以利用异常的传递性,在主程序中捕获异常

def demo1():
    return int(input("输入整数:"))

def demo2():
    return demo1()
try:
    print(demo2())
except Exception as result:
    print("未知错误 %s" %result)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KyYxYMVK-1636782746725)(C:\Users\苏柒\AppData\Roaming\Typora\typora-user-images\image-20211113093605860.png)]

发现我们在主程序中书写了一个异常捕获,最后是成功将异常捕获到了

三、主动抛出异常

1.抛出raise异常的应用场景

在开发中,处理代码执行错误 python解释器会抛出异常之外,还可以根据应用程序特有的业务需求主动抛出异常

实例:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QxMdNH2D-1636782746727)(C:\Users\苏柒\AppData\Roaming\Typora\typora-user-images\image-20211113094107700.png)]

2.主动抛出异常

python中提供了一个Exception异常类

在开发时,如果满足特定业务需求时,希望抛出异常,可以:

1.创建一个Execption异常类

2.使用raise关键字抛出异常

举例:

def input_password():
    #1.提示用户输入密码
    pwd = input("请输入密码:")
    #2.判断密码长度>=8 ,返回用户输入的密码
    if len(pwd) >=8 :
        return pwd
    #如果<8 主动抛出异常
    print("主动抛出异常")
    #创建异常对象
    ex = Exception("密码长度不够")
    #主动抛出异常
    raise ex
try:
    print(input_password())
except Exception as result:
    print(result)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-actj5sae-1636782746728)(C:\Users\苏柒\AppData\Roaming\Typora\typora-user-images\image-20211113095753486.png)]

四、文件

概念:就是储存在某种长期储存设备上的一段数据

文件可以将数据长期保存下来,在需要的时候使用

五、文件的基本操作

在python中要操作文件需要记住1个函数和3个方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mIgRZsRE-1636782746729)(C:\Users\苏柒\AppData\Roaming\Typora\typora-user-images\image-20211113104955804.png)]

1.打开文件

open函数的第一个参数就是要打开文件的文件名(文件区分大小写) 然后会返回文件操作对象

2.读、写文件

read方法可以一次性读入并返回文件的所有内容

3.关闭文件

close方法负责关闭文件

如果忘记关闭文件,会造成系统资源消耗,而且会影响后续对文件的访问

#打开文件
file = open("README")
#读取文件
text = file.read()
#关闭文件
file.close()

4.文件指针

文件指针标记从哪个位置开始读取数据,第一次打开文件时,通常文件指针会指向文件开始的位置,当执行完read方法后,文件指针会移动到内容的末尾

所以当我们执行了一次read方法后,在此使用时是无法再读取数据。

5.打开文件的方式

写入文件的方法 :write方法[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TqrUhsmD-1636782746729)(C:\Users\苏柒\AppData\Roaming\Typora\typora-user-images\image-20211113110835154.png)]

因为open函数默认是以只读方式打开文件,如果我们需要写入等其他操作的话,需要在open中添加访问方式

6.分行读取内容

read方法会一次性把所有内容读取到内存

readline方法可以一次读取一行内容,方法执行后会把文件指针移动到下一行,在读取

六、文件/目录常用管理操作

在python中,如果希望通过程序实现下述功能,需要导入os模块

1.文件操作

rename 重命名文件 示例:os.rename(源文件名,目标文件名)

remove 删除文件 示例:os.remove(文件名)

2.目录操作

listdir 目录列表 os.listdir(目录名)

mkdir 创建目录 os.mkdir(目录名)

rmdir 删除目录 os.rmdir(目录名)

gercwd 获取当前目录 os.getcwd()

chdir 修改工作目录 os.chdir(目标目录)

path.isdir 判断是否是文件 os.path.isdir(文件路径)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测开小趴菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值