zl程序教程

您现在的位置是:首页 >  Python

当前栏目

Python读写txt文本(示例说明)

2023-02-25 18:21:02 时间

txt读写相对来说比较简单写,以下通过一个简单的示例来感受下读写的效果。

1、实现的需求

①写入: 给文件名为“1.txt”的文本中,写入(800,600)-(2048,2048)之间的总计1809801行数据,数据取值必须两两组合,遍历所有的值。比如(800,600),(800,601)......(800,2048)...(801,600)...(801,2048)等等。效果图如下:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这里插入图片描述
在这里插入图片描述
取一行数据,并把该行中的数据分割后,单独打印出来。如下:
在这里插入图片描述

2、实现过程

①实现第一个需求,即1809801行数据的写入,代码如下:

import re
m = []
f = open(".\1.txt", "w")
for i in range(800,2048): # i的值为800-2048
	for j in range(600,2048): # j的值为600-2048
		p = i,j # 循环取的i,j值给p,例如循环第一遍时p=(800,600)
		m.append(p) # 把每次得到的p的值存入列表,并且在都在列表末尾追加,这样就会把所有取到的值存入了列表m
"""
上边的代码执行完后,m = [(800,600),(800,601),(800,602)......(2048,2048)]
"""
		
for n in range(len(m)):
	q = (str(m[n])+'\n') # 把得到的m列表转换成字符串,此时q如果写入txt时,就是把m列表包括“()”也会写进去
	w = q.split("(")[1] # 我们要把q中的字符串“()”去掉,先去掉“(”
	r = w.split(")")[0] # 再去掉“)”
	f.write(r+'\n') # 此时换行写入txt时就是需求中的效果了
f.close() # 关闭文件

② 实现第二个需求,即读取这1809801行数据,并把该行中的数据分割后,单独打印,如下:

i=0
num = 1809801
while(1):
    if i < num:
        with open('./1.txt', 'r') as data_file:
            lines = data_file.readlines() # 获取所有行
            data1 = int(lines[i].split(",")[0]) # 把第i行的“,”左边的数据给data1,如第一行中800,600中的800给data1
            data2 = int(lines[i].split(",")[1]) # 把第i行的“,”左边的数据给data2,如第一行中800,600中的600给data2
            print(data1)
            print(data2)
    i+=1 # 循环打印,就得到需求中的效果了

3、项目中的实例

以上需求,可以对应一个项目中的实际情况,比如让给某个设备设置分辨率,主要限制如下:

1、分辨率宽的取值为:800-2048

2、分辨率高的取值为:600-2048

3、也就是说,分辨率要从(800@600)取值到(2048@2048)

以上3点刚好对应了需求1中的描述,我们肯定是把分辨率的这些值存入到配置中,如txt中。这样后边给设置发指令的时候,只需要从配置中读取。 当然也可以在脚本中,直接把数据写入一个列表中,然后读取。经过测试,这1809801个数据写去列表是需要一段时间的,非常浪费时间和资源,效率特别低。

4、然后我们从配置中读取分辨率,发送给设备

5、必须是遍历所有的分辨率,及1809801个分辨率要发送给设备

以上2点,就刚好对应了需求2的描述。每次发送一个,不重复,要全部发完,刚好就是需求2中的代码描述。

总结:其实,我们在学习的过程中,一些简单的知识点,很可能就是一个项目中的灵魂,当能学以致用的时候,就感觉所学之宝贵。