python基础十一:异常处理以及文件操作

1、异常

1.1异常简介

程序在运行过程中可能会出现一些错误。比如: 使用了不存在的索引,两个不同类型的数据相加…这些错误我们称之为异常
处理异常: 程序运行时出现异常,目的并不是让我们的程序直接终止!Python是希望在出现异常时,我们可以编写代码来对异常进行处理

1.2异常传播

当在函数中出现异常时,如果在函数中对异常进行了处理,则异常不会在进行传播。如果函数中没有对异常进行处理,则异常会继续向函数调用传播。如果函数调用处处理了异常,则不再传播异常,如果没有处理则继续向调用处传播。直到传递到全局作用域(主模块)如果依然没有处理,则程序终止,并显示异常信息。
当程序运行过程中出现异常以后,所有异常信息会保存到一个异常对象中。而异常传播时,实际上就是异常对象抛给了调用处

1.3异常对象

try是必须的 else有没有都可以,except和finally至少有一个,链接数据库的时候一定会做的就是异常处理,是否链接上数据库,如果没链接上数据库,应该怎么办,else就是只有当异常不发生时执行else里面的东西,异常发生了,就不执行else里面的语句了,finally不论异常是否发生都会执行里面的代码,像下面的代码else语句里面的内容不会执行,finally里面的代码会执行。

try:
    print(6/0)
except Exception as a:
    print(a)
else:
    print("i haven't erorr")
finally:
    print('谢谢观看')

2、文件操作

file_name = 'nihao.txt'
file_path = 'demol/thanks.txt'
obj = open(file_name,encoding='utf-8')
obj.read(5)
obj.readline()
obj.close()
obj.write('hhhh')#写入任意字符串以int返回(写的大小)
with open(file_path,'w',newline='',encoding='utf-8')as file:
    file.write()

2.1文件打开

文件(file) 通过Python程序来对计算机中的各种文件进行增删改查的操作 文件也叫I/O(Input/Output),文件会有一个返回值。返回一个对象,这个对象就表示的是当前的文件
调用close()方法来关闭文件
with…as 语句不用写close()来关闭。它自带关闭

2.2文件读取

通过read()来读取文件的内容
调用open()来打开一个文件,可以将文件分为2中类型
一种 纯文本文件(使用utf-8编码编写的文件)
一种 二进制文件(图片 mp3 视频…)
open()打开文件时,默认是以文本文件的形式打开的 open()默认的编码为None。所以处理文本文件时要指定编码

2.3较大文件的读取

通过read()读取文件内容时会将文件中所有的内容全部读取出来。如果对于读取的文件比较大的话。会一次性的将文件加载到内容中。容易导致内存泄露。所以对于较大的文件。不要直接调用read()
read()可以接收一个size作为的参数。该参数用来指定要读取字符的数量。默认值为-1.-1也就是要读取全部的内容
每次读取都会从上次读取到的位置开始。如果字符的数量小于size。则会读取所有的。如果读取到最后的文件。则会返回空串
readline() 该方法用来读取一行
readlines() 该方法用于一行一行的读取内容,它会一次性将读取到的内容封装到一个列表当中返回

2.4文件写入

write()来向文件中写入内容
该方法可以分多次向文件写入内容
写入完成之后该方法会返回写入的字符的个数
使用open()函数打开文件时,必须要指定打开文件要做的操作(读、写、追加)。如果不指定操作类型,则默认是读取文件,而读取文件是不能向文件中写入
r 表示只读
w表示可以写。使用w写入文件时,如果文件不存在则会创建一个文件。如果文件存在则会覆盖原文件内容

2.5二进制文件的写入(图片、音频、视频都用它进行写入)

读取文本文件时,size是以字符为单位。读取二进制文件时,size是以字节为单位
我们用wb来写入二进制文件

# b 二进制文件
file_name = r'C:\Users\19214\Desktop\Kalimba.mp3'
with open(file_name,'rb') as file_obj:
    # print(file_obj.read(100))
    # 将读取到的内容写出来
    # 定义一个新的文件
    new_name = 'abc.mp3'
    with open(new_name,'wb') as new_obj:
        chuck = 1024 *100
        while True:
            # 从已有的文件读取内容
            content = file_obj.read(chuck)
            # 内容读取完毕,循环结束
            if not content:
                break
            new_obj.write(content)

2.6单例模式

'''
object对象有一个new方法用来床创建对象,如果对该方法重新,则可以构建单例模式
只有创建对象之后才可以执行__init__方法进行初始化
单例模式是设计模式的一种
单例模式 保证系统中的一个类只有一个实例
'''
class Person(object):
    _instance = None
    def __new__(cls, *args, **kwargs):
        if Person._instance is None:
            obj = object.__new__(cls)
            Person._instance = obj
        return Person._instance
p1 = Person();p2 = Person();p3 = Person()
print(id(p1),id(p2),id(p3))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值