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