3.4 读写文件

读写文件是最常见的IO操作。Python内置了读写文件的函数,用法和C的读写文件非常类似。在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。

3.4.1 Project分析

Python使用内置函数open来读写文件。查看open函数的帮助文档。执行命令:

     python3
     help(open)

执行的结果如图3-4所示。

图3-4 help open

图3-4中的Name是需要操作的文件名,mode是模式。这个模式共有7种,如表3-1所示。

表3-1 Python Open Mode

这7种模式可以组合使用。下面将用Python创建一个文件,并写入、读取内容。

3.4.2 Project实施

【示例3-4】编写operaFile.py,打开Putty连接到Linux,执行命令:

     cd code/crawler
     vi operaFile.py

operaFile.py的代码如下:

     1 #!/usr/bin/env python3
     2 #-*- coding: utf-8 -*-
     3 __author__ = 'hst_king hst_king@hotmail.com'
     4
     5 import os
     6
     7 def operaFile():  #创建文件
     8     print('创建一个名字为test.txt的文件,并在其中写入Hello Python')
     9     print('先得保证test.txt不存在')
     10     os.system('rm test.txt')
     11     os.system('ls -l test.txt')
     12     print('现在再来创建文件并写入内容\n')
     13     fp = open('test.txt', 'w')
     14     fp.write('Hello Python')
     15     fp.close()
     16     print('不要忘记用close关闭文件哦')
     17     print('再来看看test.txt是否存在,和内容\n')
     18     os.system('ls -l test.txt')
     19     os.system('cat test.txt')
     20     print('\n')
     21
     22     print('如何避免open文件失败的问题呢?')
     23     print('使用with as就可以了')
     24     with open('test.txt', 'r') as fp:
     25         st = fp.read()
     26     print('test.txt的内容为:%s' %st)
     27
     28 if __name__ == '__main__':
     29     operaFile()

执行命令:

     python operaFile.py

得到的结果如图3-5所示。

图3-5 Python读写文件

Python对文件的操作跟C类似,但功能远比C要丰富。例如按行读取文件,多行读取文件等。C语言的优势是快,而Python的优势是模块多、功能丰富。