Python中文本文件的读取(包含指针移动)

时间:2024-03-14 11:28:33

一、普通文件的读写

打开文件的步骤:打开 --> 操作 --> 关闭

注意:打开后关闭的原因是因为这样不会浪费文字描述符

文件读写的方式:

  • r:(默认)
    -只能读,不能写
    -读取的文件不存在,会报错

  • r+:
    -可读写
    -文件不存在,报错
    -默认从文件指针所在位置开始写入

  • w:
    -只能写
    -会清空文件之前的内容
    -文件不存在,不会报错,会创建新的文件并写入

  • w+:
    -可读写
    -会清空文件内容
    -文件不存在,不会报错,会创建新的文件并写入

  • a:
    -只能写
    -文件不存在,不报错,会创建新的文件
    -不会清空文件内容

  • a+:
    -可读写
    -文件不存在,不报错
    -不会清空文件内容

二、具体实验举例

1. 打开关闭文件的实验要求如下:

(1) 题目要求:
举例说明如何让打开关闭文件,同时将文件中的内容输出
代码及测试结果如下:
<1> 首先将/etc/passwd备份到/tm/passwd下,如下所示:
Python中文本文件的读取(包含指针移动)
<2> 在python的IDE中写入以下代码:
Python中文本文件的读取(包含指针移动)
(2) 题目要求:
显示文件是否可读和可写
代码及测试结果如下:
结果显示只可读不可写
Python中文本文件的读取(包含指针移动)

2、关于r的实验

(1) 题目要求:
如果文件存在时,是否能进行读写,如果能请举例说明
代码及测试结果如下:
Python中文本文件的读取(包含指针移动)
修改文件的权限,再次测试发现还是不能进行写操作,如下所示:
Python中文本文件的读取(包含指针移动)
Python中文本文件的读取(包含指针移动)
因此,当文件存在时只能进行读操作,而不能进行写操作。

(2) 题目要求:
当文件不存在时,是否能对其进行读写操作,请举例说明
代码及示例结果如下:
Python中文本文件的读取(包含指针移动)
总结:文件只能读不能写 ,当读取的文件不存在,会报错

3、关于r+的实验

(1) 题目要求:
当文件存在时,是否能对其进行读写操作,请举例说明
代码及运行结果:
在python中写入下面的代码:
Python中文本文件的读取(包含指针移动)
Python中文本文件的读取(包含指针移动)
注意: 在上面的结果中我们可以发现,文件既能读也能写,但写操作之后无法读出文件的内容,这是因为文件的指针移动了,但我们可以通过命令行查看上面写入的内容,如下所示:
Python中文本文件的读取(包含指针移动)
为了解决这一问题,我们可以通过查看和移动指针的位置来解决,如下所示:
Python中文本文件的读取(包含指针移动)
Python中文本文件的读取(包含指针移动)
因为上面值时查看了指针的位置并没有移动位值,所以当我们再次进行读操作时,上面写入的内容就会出现,如下所示:
Python中文本文件的读取(包含指针移动)
Python中文本文件的读取(包含指针移动)
总结:当文件存在时,可读写,默认从文件指针所在位置开始写入;文件不存在时,报错

4、关于w的实验

(1) 题目要求:
举例说明当文件存在时,只能写操作,况且写会清空文件的内容
代码及运行结果如下:
Python中文本文件的读取(包含指针移动)
文件的内容已清空,只有上面写入的,如下所示:
Python中文本文件的读取(包含指针移动)
(2) 题目要求:
当文件不存在时,是否会创建新的文件并写入,请举例说明
代码及运行结果如下:
Python中文本文件的读取(包含指针移动)
Python中文本文件的读取(包含指针移动)
总结:当文件存在时,只能写不能读,并且写会清空文件之前的内容;当文件不存在,不会报错,会创建新的文件并写入

5、关于w+的实验

(1) 题目要求:
举例说明当文件存在时,不仅能读也能写操作,并且写会清空文件的内容
代码及运行结果:
Python中文本文件的读取(包含指针移动)
Python中文本文件的读取(包含指针移动)
(2) 题目要求:
举例说明当文件不存在时,是否会创建新的文件并写入,请举例说明
代码及运行结果:
Python中文本文件的读取(包含指针移动)
Python中文本文件的读取(包含指针移动)

6、关于a的实验

(1) 题目要求:
举例说明当文件存在时,只能进行写不能读,并且写操作不会清空文件内容
代码及运行结果:
Python中文本文件的读取(包含指针移动)
Python中文本文件的读取(包含指针移动)
(2) 题目要求:
举例说明当文件不存在时,不会报错,会创建新的文件
代码及运行结果:
Python中文本文件的读取(包含指针移动)
Python中文本文件的读取(包含指针移动)

7、关于a+的实验

(1) 题目要求:
举例说明当文件不存在时,不仅能进行读操作也能进行写操作,并且写操作不会清空文件内容
代码及运行结果如下:
Python中文本文件的读取(包含指针移动)
Python中文本文件的读取(包含指针移动)
(2) 题目要求:
举例说明当文件不存在时,不会报错,会创建新的文件
代码及运行结果:
Python中文本文件的读取(包含指针移动)
Python中文本文件的读取(包含指针移动)

三、文件的读取

  • readlines():读取文件内容,返回一个列表,列表里的元素分别为文件每行的内容

首先在/tmp下编写一个文件,如下所示:
Python中文本文件的读取(包含指针移动)
读取文件的全部内容,如下所示:
Python中文本文件的读取(包含指针移动)
读取文件的第一行,如下所示:
Python中文本文件的读取(包含指针移动)
以列表的形式读取文件,如下所示:
Python中文本文件的读取(包含指针移动)
读取文件中的字节,如下所示:
Python中文本文件的读取(包含指针移动)
读取文件并且以’ '结尾的行,如下所示:
Python中文本文件的读取(包含指针移动)
在列表中以循环的形式读取文件,如下所示:
Python中文本文件的读取(包含指针移动)
以匿名函数的形式读取文件,并将文件放入到列表中,如下所示:
Python中文本文件的读取(包含指针移动)

四、seek方法,移动指针

  • seek第一个参数是偏移量:>0,代表向右移动,<0,代表向左移动

  • seek第二个参数是:

  • 0:移动指针到文件开头

  • 1:不移动指针

  • 2:移动指针到末尾

代码及运行结果如下:
Python中文本文件的读取(包含指针移动)