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

举报
虫无涯 发表于 2023/01/12 13:22:49 2023/01/12
【摘要】 txt读写相对来说比较简单写,以下通过一个简单的示例来感受下读写的效果。 1、实现的需求①写入:给文件名为“1.txt”的文本中,写入(800,600)-(2048,2048)之间的总计1809801行数据,数据取值必须两两组合,遍历所有的值。比如(800,600),(800,601)…(800,2048)…(801,600)…(801,2048)等等。效果图如下:[外链图片转存失败,源站可...

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中的代码描述。

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。