Python 逐行修改txt每条记录的内容
Txt中保存以些数据,这些数据中我们要逐行read line出来进行处理,约定第一个字符为"#"的数据表示已经处理。
一个办法是读取txt,新增另外一个已完成处理txt来保存完成的数据。这样进行对比。但我现在要的效果是在同一个Txt文本里面来标记处理过的数据。
这里面就用道理open方法的各种模式。
原理是这样的:
首先"r"模式打开txt,读取每一行的数据,判断是否已经'#'过, 有"#"说明已经发送过,so continue跳过,
没有"#"的,进行逻辑发送,当发送状态为成功时UPdate该条记录为"#"
update的时候,先新建对象打开该文件,(不能使用之前"r"模式打开的内容,因为第一次"r",已经保存在内存中,即使update该条记录,上条记录又会覆盖)
且不能用“w”模式打开,为什么呢,因为'w'模式是删除原数据,等在update的时候txt已经为空了。so
在再新建对象以'w+'模式打开,用这个对象去保存update生成的数据。这样就不会覆盖之前update的数据了。 现在先整一个txt为list.text 内容如下
id=
id=
id=
#id=
id=
id=
id=
#id=
id=
id=
id=
其中id= 13与98的已经处理过了
代码:
# -*- coding: utf-8 -*-
import time
import random
f = open("list.txt", "r", encoding='utf-8')
data = f.readlines() '''
发送方法
'''
def sending(i):
print('发送……'+i)
rand=random.randint(1, 6) # 随机生成发送失败的概率
if rand>=2:
return 1
else:
return False '''
写入 “#”
w+打开文件会将原文件内容删除,可以同时对文件进行读写
r+打开文件会保持原文件内容不变,同样可以同时对文件进行读写
'''
def writeD(current):
cid = 0
string = ''
rf = open("list.txt", "r+", encoding='utf-8') # rf是时时读取txt内容(已经修改过的),f是已经保存在内存中
for orig in rf.readlines():
if cid == current:
# 每完成一个, 给该【0】 记录前添加 #
string += "#" + orig
else:
string += orig
cid+=1
rf.close()
wf=open("list.txt",'w+',encoding='utf-8') # wf的 w+打开是删除txt内容,写入rf中修改的内容
wf.write(string)
wf.close() j = -1
for i in data:
j += 1
if i[0] == '#':
continue
status = sending(i)
if status:
writeD(j)
time.sleep(3) # 休眠3秒 f.close()
运行效果:
#id=
#id=
id=
#id=
id=
#id=
id=
#id=
#id=
id=
#id=
Python 逐行修改txt每条记录的内容的更多相关文章
- python 逐行读取txt文件
逐行读取txt文件 path = r'D:\123456\1.txt'with open(path, 'r', encoding='utf-8') as f: for line in f: ...
- SQL -------- JDBC 修改某条记录得内容
package demo; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; ...
- 使用SpringMVC的crud操作时,进行数据修改,但是修改成功后,页面无法显示lastName属性值(被修改的那条记录)
我这个错误的原因在于,把map的键写错了,它必须和类名第一个字母小写相同 @ModelAttribute public void getEmployee(@RequestParam(value=&qu ...
- python基础-修改haproxy配置文件
需要掌握的知识: 1.函数 2.文件处理 3.tag的用法 4.程序的解耦 需求: 1:查询 2:添加 3:删除 4:修改 5:退出 haproxy.conf 配置文件内容: global log 1 ...
- Oracle 取前几条记录
今天看了篇文章,对oracle取前几条数据的方式和说明,总结比较全,学习了,做个记录点.oracle 取前10条记录 以下内容是原始文章内容,用于做留存阅读. 1.oracle 取前10条记录 1) ...
- 孤荷凌寒自学python第五十三天使用python写入和修改Firebase数据库中记录
孤荷凌寒自学python第五十三天使用python写入和修改Firebase数据库中记录 (完整学习过程屏幕记录视频地址在文末) 今天继续研究Firebase数据库,利用google免费提供的这个数 ...
- dedecms如何修改共0页/0条记录为英文版?
近日,在测试一个网站功能的时候,发现在搜索结果的下面为中文的“共0页/0条记录”,但客户的网站为英文版,所以我们需要将搜索的结果信息也要显示为英文,好了,我们开始动手修改dedecms的文件,以达到我 ...
- salesforce 零基础学习(六十九)当新增/修改一条记录以后发生了什么(适合初学者)
salesforce开发中,我们会对object进行很多的操作,比如对object设置字段的必填性唯一性等,设置validation rule实现一下相关的字段的逻辑校验,设置workflow实现某个 ...
- python 往mysql数据库中插入多条记录。
最近想写mysql库,用到insert into语句,如何一次性将多条记录插入库表中呢. MySQLdb提供了两个执行语句的方法:一个是execute(),另一个是executemany() exec ...
随机推荐
- Bubble Cup 8 finals H. Bots (575H)
题意: 简单来说就是生成一棵树,要求根到每个叶子节点上的路径颜色排列不同, 且每条根到叶子的路径恰有n条蓝边和n条红边. 求生成的树的节点个数. 1<=n<=10^6 题解: 简单计数. ...
- EntityFramework 优化建议
Entity Framework目前最新版本是6.1.3,当然Entity Framework 7 目前还是预览版,并不能投入正式生产环境,估计正式版16年第一季度会出来,了解过EF7的部分新特性后, ...
- 【bzoj2073】[POI2004]PRZ
题目描述 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍在桥上的人都不能超过一定的限制. 所以这只队伍过桥时只能分批 ...
- Python员工信息表练习
1.用户可以模糊查询员工信息 2.显示匹配了多少条,匹配字符需要高亮显示 employee_db.txt 总经办 龚丽丽 总经理 男 -- 1月18日 汉 族 中共党员 已婚 总经办 李惠 副总经理 ...
- jquery easyui datagrid翻页后再查询始终从第一页开始
在查询之前将datagrid的属性pageNumber重新设置为1 var opts = grid.datagrid('options'); opts.pageNumber = 1; easyui d ...
- Asp.Net Core--发布到IIS
翻译如下: 支持的操作系统 Windows 7及更高版本 Windows Server 2008 R2及更高版本 概念上,本文档中描述的IIS配置也适用于在Nano Server IIS上托管ASP. ...
- android中xml tools属性详解
第一部分 安卓开发中,在写布局代码的时候,ide可以看到布局的预览效果. 但是有些效果则必须在运行之后才能看见,比如这种情况:TextView在xml中没有设置任何字符,而是在activity中设置了 ...
- angularjs $scope.$apply 方法详解
myApp.controller('firstController',function($scope,$interval){ $scope.date = new Date(); setInterval ...
- react+redux官方实例TODO从最简单的入门(1)-- 前言
刚进公司的时候,一点react不会,有一个需求要改,重构页面!!!完全懵逼,一点不知道怎么办!然后就去官方文档,花了一周时间,就纯react实现了页面重构,总体来说,react还是比较简单的,由于当初 ...
- EXCEL 2010学习笔记 —— 数据透视表
今天整理一下EXCEL2010 数据透视表的课程笔记,数据透视表可以对多组数据进行统计和整理,是一种基本的数据可视化工具. 记录6个方面的总结: 1.创建数据透视表 2.更改数据透视表的汇总方式 3. ...