网络自动化运维教程
上QQ阅读APP看书,第一时间看更新

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),它能够帮助我们自动分配并且释放资源,保证文件自动关闭。

有时需要同时处理两个文件,如将从一个文件中读出的内容再写入另一个文件。在这种情况下,可以按如下方式打开两个文件: