1.3.2 文件处理
到目前为止,所有的程序都是从控制台获取输入并将执行结果输出到控制台的,实现了与用户的交互。但控制台上只能显示有限的数据,也无法反复从程序中生成数据,一旦发生意外,所有工作成果将瞬间消失。文件处理在数据需要永久存储到文件时发挥着重要作用,通过文件处理,可以读取、写入、创建、删除和更改文件。
Python提供了内置的文件对象,以及用于对文件、目录进行操作的内置模块,通过这些可以很方便地将数据保存到文件中。
1.文件路径
在Windows上,书写路径时使用反斜线作为路径分隔符。但在OS X和Linux上,使用正斜线作为路径分隔符。如果想要程序运行在所有操作系统上,在编写程序时,就必须考虑到这两种情况。
r/R表示原始字符串。所有的字符串都是直接按照字面的意思来使用的,没有转义特殊或不能输出的字符。原始字符串第一个引号前有字母“r”(可以大写),与普通字符串有着几乎完全相同的语法。我们只需要在文件路径字符串引号前加上r或R就可以轻松处理文件路径带来的问题了。
2.文件操作
Python中文件操作有很多种,常见的操作是对文件进行读取和写入。文件必须在打开之后才能进行操作,在操作结束之后,还应该将其关闭。因此文件操作可以分为以下3步,每一步都需要借助对应的函数实现。
●打开文件:使用内置的open()函数,该函数会返回一个文件对象。
●对已打开的文件进行读/写操作:读取文件内容,可使用read()、readline()以及readlines()函数;向文件中写入内容,可以使用write()函数。
●关闭文件:完成对文件的读/写操作之后,需要关闭文件,可以使用close()函数。
(1)打开文件
在Python中,要操作文件,首先需要创建或者打开指定的文件,并创建文件对象,而这些工作可以通过内置的open()函数完成。
●'file_name.txt'是要打开文件的名称。不仅可以指定文件名,还可以指定路径(绝对路径或相对路径)。
●'r'是文件打开模式,表示以只读的模式打开文件。open()支持更多的文件打开模式,常用的文件打开模式如表1-1所示。
表1-1 常用的文件打开模式
(2)读取文件
Python提供了如下3种函数来实现读取文件中数据的操作。
●read()函数:逐个字节或者字符读取文件中的内容。
●readline()函数:逐行读取文件中的内容。
●readlines()函数:一次性读取文件中的多行内容。
下面通过readlines()函数读取文件R1.txt,R1.txt文件内容如下:
readlines()函数操作如下:
(3)写入文件
写入文件时,指定正确的文件打开模式非常重要,以免误删。
●w:打开文件进行写入。如果文件存在,则删除其内容。
●a:打开文件以添加数据,数据添加到文件末尾。
如果文件不存在,则在这两种模式下都会创建一个文件。以下函数用于写入文件。
●write():将一行内容写入文件。
●writelines():允许将字符串列表作为参数发送到文件中。
下面通过write()函数将字符串写入文件。
(4)关闭文件
前面在介绍文件操作时,一直强调打开的文件最后一定要关闭,否则会给程序的运行造成意想不到的隐患。但是,即便使用close()函数,如果在打开文件或文件操作过程中抛出了异常,则还是无法及时关闭文件。
为了更好地避免此类问题出现,Python提供了with as语句用来操作上下文管理器(Context Manager),它能够帮助我们自动分配并且释放资源,保证文件自动关闭。
有时需要同时处理两个文件,如将从一个文件中读出的内容再写入另一个文件。在这种情况下,可以按如下方式打开两个文件: