一、普通文件的读写
打开文件的步骤:打开 --> 操作 --> 关闭
注意:打开后关闭的原因是因为这样不会浪费文字描述符
文件读写的方式:
-
r:(默认)
-只能读,不能写
-读取的文件不存在,会报错 -
r+:
-可读写
-文件不存在,报错
-默认从文件指针所在位置开始写入 -
w:
-只能写
-会清空文件之前的内容
-文件不存在,不会报错,会创建新的文件并写入 -
w+:
-可读写
-会清空文件内容
-文件不存在,不会报错,会创建新的文件并写入 -
a:
-只能写
-文件不存在,不报错,会创建新的文件
-不会清空文件内容 -
a+:
-可读写
-文件不存在,不报错
-不会清空文件内容
二、具体实验举例
1. 打开关闭文件的实验要求如下:
(1) 题目要求:
举例说明如何让打开关闭文件,同时将文件中的内容输出
代码及测试结果如下:
<1> 首先将/etc/passwd备份到/tm/passwd下,如下所示:
<2> 在python的IDE中写入以下代码:
(2) 题目要求:
显示文件是否可读和可写
代码及测试结果如下:
结果显示只可读不可写
2、关于r的实验
(1) 题目要求:
如果文件存在时,是否能进行读写,如果能请举例说明
代码及测试结果如下:
修改文件的权限,再次测试发现还是不能进行写操作,如下所示:
因此,当文件存在时只能进行读操作,而不能进行写操作。
(2) 题目要求:
当文件不存在时,是否能对其进行读写操作,请举例说明
代码及示例结果如下:
总结:文件只能读不能写 ,当读取的文件不存在,会报错
3、关于r+的实验
(1) 题目要求:
当文件存在时,是否能对其进行读写操作,请举例说明
代码及运行结果:
在python中写入下面的代码:
注意: 在上面的结果中我们可以发现,文件既能读也能写,但写操作之后无法读出文件的内容,这是因为文件的指针移动了,但我们可以通过命令行查看上面写入的内容,如下所示:
为了解决这一问题,我们可以通过查看和移动指针的位置来解决,如下所示:
因为上面值时查看了指针的位置并没有移动位值,所以当我们再次进行读操作时,上面写入的内容就会出现,如下所示:
总结:当文件存在时,可读写,默认从文件指针所在位置开始写入;文件不存在时,报错
4、关于w的实验
(1) 题目要求:
举例说明当文件存在时,只能写操作,况且写会清空文件的内容
代码及运行结果如下:
文件的内容已清空,只有上面写入的,如下所示:
(2) 题目要求:
当文件不存在时,是否会创建新的文件并写入,请举例说明
代码及运行结果如下:
总结:当文件存在时,只能写不能读,并且写会清空文件之前的内容;当文件不存在,不会报错,会创建新的文件并写入
5、关于w+的实验
(1) 题目要求:
举例说明当文件存在时,不仅能读也能写操作,并且写会清空文件的内容
代码及运行结果:
(2) 题目要求:
举例说明当文件不存在时,是否会创建新的文件并写入,请举例说明
代码及运行结果:
6、关于a的实验
(1) 题目要求:
举例说明当文件存在时,只能进行写不能读,并且写操作不会清空文件内容
代码及运行结果:
(2) 题目要求:
举例说明当文件不存在时,不会报错,会创建新的文件
代码及运行结果:
7、关于a+的实验
(1) 题目要求:
举例说明当文件不存在时,不仅能进行读操作也能进行写操作,并且写操作不会清空文件内容
代码及运行结果如下:
(2) 题目要求:
举例说明当文件不存在时,不会报错,会创建新的文件
代码及运行结果:
三、文件的读取
- readlines():读取文件内容,返回一个列表,列表里的元素分别为文件每行的内容
首先在/tmp下编写一个文件,如下所示:
读取文件的全部内容,如下所示:
读取文件的第一行,如下所示:
以列表的形式读取文件,如下所示:
读取文件中的字节,如下所示:
读取文件并且以’ '结尾的行,如下所示:
在列表中以循环的形式读取文件,如下所示:
以匿名函数的形式读取文件,并将文件放入到列表中,如下所示:
四、seek方法,移动指针
-
seek第一个参数是偏移量:>0,代表向右移动,<0,代表向左移动
-
seek第二个参数是:
-
0:移动指针到文件开头
-
1:不移动指针
-
2:移动指针到末尾
代码及运行结果如下: