Python学习11_文件操作与异常

文件操作

在Python中课通过内置的open函数实现文件的读写操作。可以指定文件名,操作模式,编码信息等来获得操作文件的对象。

操作模式 具体含义
'r' 读取 (默认)
'w' 写入(会先截断之前的内容)
'x' 写入,如果文件已经存在会产生异常
'a' 追加,将内容写入到已有文件的末尾
'b' 二进制模式
't' 文本模式(默认)
'+' 更新(既可以读又可以写)

读写文本文件

读取文件时,需要在使用open函数时制定好带路径的文件名,并将文件模式设置为’r‘,然后通过encoding参数指定编码,如果不能保证保存文件时使用的编码方式与encoding参数指定的编码方式是一致的,那么就会因无法解码字符导致读取失败。

image-20210218012600350

如果文件并不存在或者无法打开,那么将引发异常状况导致程序崩溃。可以通过异常机制对可能在运行时发生状况的代码进行适当的处理。

image-20210218013025869

在Python中,我们可以将那些在运行时可能会出现状况的代码放在try代码块中,在try代码块的后面可以跟上一个或多个except来捕获可能出现的异常状况。例如在上面读取文件的过程中,文件找不到会引发FileNotFoundError,指定了未知的编码会引发LookupError,而如果读取文件时无法按指定方式解码会引发UnicodeDecodeError,我们在try后面跟上了三个except分别处理这三种不同的异常状况。最后我们使用finally代码块来关闭打开的文件,释放掉程序中获取的外部资源,由于finally块的代码不论程序正常还是异常都会执行到(甚至是调用了sys模块的exit函数退出Python环境,finally块都会被执行,因为exit函数实质上是引发了SystemExit异常),因此我们通常把finally块称为“总是执行代码块”,它最适合用来做释放外部资源的操作。如果不愿意在finally代码块中关闭文件对象释放资源,也可以使用上下文语法,通过with关键字指定文件对象的上下文环境并在离开上下文环境时自动释放文件资源,代码如下所示。

image-20210218013135342

除了使用文件对象的read方法读取文件之外,还可以使用for-in循环逐行读取或者用readlines方法将文件按行读取到一个列表容器中,代码如下所示。

image-20210218111027640

文件写入操作,在使用open函数时,制定好文件名并将文件模式改为w即可。如果是对文件内容追加,则要设置为a。

image-20210218111859094

读写二进制文件

实现了复制图片文件的功能。

image-20210218112426869

读写JSON文件

如果希望把一个列表或者一个字典中的数据保存到文件中又该怎么做呢?答案是将数据以JSON格式进行保存。使用Python中的json模块就可以将字典或列表以JSON格式保存到文件中,代码如下所示。

image-20210218112715894

重要函数

  • dump

    将Python对象按照JSON格式序列化到文件中

  • dumps

    将Python对象处理成JSON格式的字符串

  • load

    将文件中的JSON数据反序列化成对象

  • loads

    将字符串的内容反序列化成Python对象

posted @ 2021-02-18 11:34  咸鱼爱学习  阅读(103)  评论(0编辑  收藏  举报