python-learning-note-5

Posted on May 19, 2023

异常和文件

异常

程序运行过程中,一旦出现异常将会导致程序立即终止,常以后的代码全部都不会执行

处理异常

Python是希望在出现异常时,我们可以编写代码来对异常进行处理,避免因为一个异常导致整个程序的终止

try语句 try: 代码块(可能出现错误的语句) except 异常类型 as 异常名: 代码块(出现错误以后的处理方式) except 异常类型 as 异常名: 代码块(出现错误以后的处理方式) except 异常类型 as 异常名: 代码块(出现错误以后的处理方式) else: 代码块(没出错时要执行的语句) finally: 代码块(该代码块总会执行)

try是必须的 else语句有没有都行,except和finally至少有一个

如果except后不跟任何的内容,则此时它会捕获到所有的异常;如果在except后跟着一个异常的类型,那么此时它只会捕获该类型的异常,Exception 是所有异常类的父类,所以如果except后跟的是Exception,他也会捕获到所有的异常,可以在异常类后边跟着一个 as xx 此时xx就是异常对象(就是简单的重命名)

异常的传播(抛出异常)

当程序运行过程中出现异常以后,所有的异常信息会被保存一个专门的异常对象中,而异常传播时,实际上就是异常对象抛给了调用处,Python为我们提供了多个异常对象

可以使用 raise 语句来抛出异常,raise语句后需要跟一个异常类 或 异常的实例,抛出异常的目的是告诉调用者这里调用时出现问题,希望你自己处理一下

文件 File

操作文件的步骤: ① 打开文件 ② 对文件进行各种操作(读、写),然后保存 ③ 关闭文件

打开文件 open(file, mode='r', buffering=-1, encoding_=None, errors=None, newline=None, closefd=True, opener=None)

获取了文件对象以后,所有的对文件的操作都应该通过对象来进行:

  • read()方法,用来读取文件中的内容,它会将内容全部保存为一个字符串返回
  • close()方法,用来关闭文件
  • with open(file_name) as file_obj :在with语句中可以直接使用file_obj来做文件操作,此时这个文件只能在with中使用,一旦with结束则文件会自动close()
file_name = 'hello'

try:
    with open(file_name) as file_obj :
        print(file_obj.read())
except FileNotFoundError:
    print(f'{file_name} 文件不存在~~')

open()打开文件时,默认是以文本文件的形式打开的,但是open()默认的编码为None,必须要指定文件的编码

  • r 表示只读的
  • w 表示是可写的,使用w来写入文件时,如果文件不存在会创建文件,如果文件存在则会截断文件,截断文件指删除原来文件中的所有内容
  • a 表示追加内容,如果文件不存在会创建文件,如果文件存在则会向文件中追加内容
  • x 用来新建文件,如果文件不存在则创建,存在则报错
    • 为操作符增加功能

对于较大的文件,不要直接调用read(),read()可以接收一个size作为参数,该参数用来指定要读取的字符的数量,默认为-1,即全部读入,每一次读取都是从上次读取到位置开始读取的

readlines() 该方法用于一行一行的读取内容,它会一次性将读取到的内容封装到一个列表中返回

write()来向文件中写入内容,如果操作的是一个文本文件的话,则write()需要传递一个字符串作为参数,写入完成以后,该方法会返回写入的字符的个数

读取模式:

  • t 读取文本文件(默认值)
  • b 读取二进制文件

seek() 可以修改当前读取的位置,需要两个参数:

  • 第一个 是要切换到的位置
  • 第二个 计算位置方式
  • 可选值: 0 从头计算,默认值 1 从当前位置计算 2 从最后位置开始计算

tell() 方法用来查看当前读取的位置

文件的其他操作

os.listdir() 获取指定目录的目录结构,该方法会返回一个列表,目录中的每一个文件(夹)的名字都是列表中的一个元素

os.getcwd() 获取当前所在的目录

os.chdir() 切换当前所在的目录 作用相当于 cd

os.mkdir() 创建目录

os.rmdir() 删除目录

os.remove() 删除文件

os.rename(‘旧名字’,‘新名字’) 可以对一个文件进行重命名,也可以用来移动一个文件

pprint介绍(还挺好用):https://zhuanlan.zhihu.com/p/508317313