python 内置模块 txt 文件的读写操作

1,075 阅读5分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情


1.文件打开

无论是读文件,还是写文件,都需要先将文件打开,通过Python内置的open方式打开,语法如下:

变量=open(文件路径,文件打开模式) 文件打开模式有以下几种。

  • r以只读的方式打开。

  • r+以读写的方式打开。

  • w以写入的方式打开,会覆盖原有文件的所有内容,如果不存在,则新建文件。

  • w+以读写的方式打开,会覆盖原有文件的所有内容,如果不存在,则新建文件。

  • a以写入的方式打开,不会覆盖原有文件的内容,追加写入到文件的最后,如果不存在, 则新建文件。

  • a+以读写的方式打开,不会覆盖原有文件的内容,追加写入到文件的最后,如果不存在, 则新建文件。

  • b以二进制的方式打开,可以结合r、w、a使用。

  • ·U支持所有的换行符号。

可以根据实际情况选择对应的模式或者组合模式,先新建一个txt文件, 随便输入一些内容,然后在读写文件的实例代码中介绍如何使用。新建文件中的内容如图所示。

image.png

2.文件读取

文件读取是Python内置的函数,不需要导入模块就可以直接调用了。这个功能对于自动化测试来说其意义在于测试用例的数据读取,读取文件有3种方法。

  • readO 读取文件的所有内容。

  • readline()读取文件的第一行内容。

  • readlines()读取文件的每一行内容。

通过实例来看一下这3种的差异,read()方法

实例代码:

1 file = open("G:\\python\\shuju.txt","r") 

2 result=file.read()

3 print(result) 

4 file.close()

代码说明:

1 选择txt文件对应的路径,以只读方式打开,并实例化赋值给变量file。

2 通过file对象的readO方法把文件结果读出,并赋值给变量result。

4 关闭文件释放资源。

再来看readline()方法的实例代码:

1 file = open("G:\\python\\shuju.txt","r") 

2 result=file.readline()

3 print (result)

4 file.close()

运行结果如图所示。

image.png

最后来看readlines()方法的实例代码。

1 file = open("G:\\python\\shuju.txt","r")

2 result = file.readlines()

3 print(result)

4 file.close()

运行结果如图所示。

image.png

通过运行结果,可以一目了然地看到3种方法的不同,也许有人对read()和readlines()的差异有所困惑,不都是读取文件的全部吗?这里有个关键的差异,这二者读取后的数据类型是不一样的,readO读取出来的数据类型是字符串,而readlines()读取出来的数据类型是列表,每一行作为 列表的一个元素,这就导致在不同情况下需要使用不同的方法读取文件数据。一般来说推荐使用 readlines()方法,尤其对于测试数据来说,一行作为一组数据等同于列表 的一个元素,这样在使用数据的时候可以通过循环的方法读取每一行数据,以达到一组数据作为 一个测试用例执行的目的。

实例代码:

1 file = open("G:\\python\\shuju.txt","r") 

2 result=file.readlines()

3 for i in result: 

4 print(i) 

5 file.close() 

代码说明:

3 通过for循环将列表result中的元素依次赋值给变量i。 运行结果如图所示。

image.png

通过结果看到,每一次循环打印一次列表中的元素,用这样的方式就可以输入不同的数据作为自动化测试的测试参数了,只需要在新建文件的时候按照一行一组数据的方式编写,

再通过循环依次赋值来执行测试。

知道了读取一组数据的方式,那如何才能把一组数据分离出来分别赋值给不同的参数呢?因 为输入的内容每一行都是一组字符串,所以需要通过 split0方法把字符串元素通过“,”分离成 列表,最后再通过列表的索引依次赋值。

实例代码:

image.png

代码说明:

4 把变量i用split(用逗号分隔成包含3个元素的列表,并赋值给变量x。

6~9分别把列表的三个元素赋值给变量a、b、c。

用上面的方法读取文件数据,就可以完成数据驱动的自动化测试了

3 文件写入

文件写入也是Python的内置函数,这个功能对于自动化测试来说意义在于测试报告的输出。

文件写入的方式有以下两种。

  • write()将全部内容一起写入文件。

  • writelines()把列表内容逐行写入文件。

一般情况下用writ()就可以了,除非写入内容是列表类型,对于测试来说用write()方式就足 够了,以追加写入为例。

实例代码:

1 file = open("G:\\python\\shuju.txt" ,a+") 

2 file.write("xxx"+"\n") 

还有一种是替换的方式写入,实例代码:

1 file = open("G:\\pytn\\shujun.txt,"w+") 

2 file.write("yyy"+"\n")

3 file.write("zzz"+"\n")

打开txt文件查看写入结果如图所示。

image.png

通过运行结果可以看到2种写入方式的差异,对于测试报告的输出也需要根据实际需求来选择使用哪种方式。