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每条记录的内容的更多相关文章

  1. python 逐行读取txt文件

    逐行读取txt文件 path = r'D:\123456\1.txt'with open(path, 'r', encoding='utf-8') as f:    for line in f:   ...

  2. SQL -------- JDBC 修改某条记录得内容

    package demo; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; ...

  3. 使用SpringMVC的crud操作时,进行数据修改,但是修改成功后,页面无法显示lastName属性值(被修改的那条记录)

    我这个错误的原因在于,把map的键写错了,它必须和类名第一个字母小写相同 @ModelAttribute public void getEmployee(@RequestParam(value=&qu ...

  4. python基础-修改haproxy配置文件

    需要掌握的知识: 1.函数 2.文件处理 3.tag的用法 4.程序的解耦 需求: 1:查询 2:添加 3:删除 4:修改 5:退出 haproxy.conf 配置文件内容: global log 1 ...

  5. Oracle 取前几条记录

    今天看了篇文章,对oracle取前几条数据的方式和说明,总结比较全,学习了,做个记录点.oracle 取前10条记录 以下内容是原始文章内容,用于做留存阅读. 1.oracle 取前10条记录 1) ...

  6. 孤荷凌寒自学python第五十三天使用python写入和修改Firebase数据库中记录

     孤荷凌寒自学python第五十三天使用python写入和修改Firebase数据库中记录 (完整学习过程屏幕记录视频地址在文末) 今天继续研究Firebase数据库,利用google免费提供的这个数 ...

  7. dedecms如何修改共0页/0条记录为英文版?

    近日,在测试一个网站功能的时候,发现在搜索结果的下面为中文的“共0页/0条记录”,但客户的网站为英文版,所以我们需要将搜索的结果信息也要显示为英文,好了,我们开始动手修改dedecms的文件,以达到我 ...

  8. salesforce 零基础学习(六十九)当新增/修改一条记录以后发生了什么(适合初学者)

    salesforce开发中,我们会对object进行很多的操作,比如对object设置字段的必填性唯一性等,设置validation rule实现一下相关的字段的逻辑校验,设置workflow实现某个 ...

  9. python 往mysql数据库中插入多条记录。

    最近想写mysql库,用到insert into语句,如何一次性将多条记录插入库表中呢. MySQLdb提供了两个执行语句的方法:一个是execute(),另一个是executemany() exec ...

随机推荐

  1. spring-mvc注解(mvc:annotation-driver,JSON,配置详解)

    一.DefaultAnnotationHandlerMapping 和 AnnotationMethodHandlerAdapter 的使用已经过时! spring 3.1 开始我们应该用 Reque ...

  2. js图片延迟加载

    什么是图片延迟加载? 也叫懒加载. 当页面有多屏的时候,页面中的图片比较多. 那么,在页面载入完毕的时候,并不会把所有的图片都加载进来. 而是当用户拖动滚动条的时候,图片要进入用户的视野了,才开始加载 ...

  3. Yii2 定时任务创建(Console 任务)

    Yii2的定时任务可以有两种写法,原理都是通过服务器的定时任务去调用 1.通过调用指定的URL访问 就相当于在浏览器中访问 2.通过console调用 下面我们就来说说Console 是如何实现定时任 ...

  4. PHP获取接口数据(模拟Get)

    当我们在做PHP开发的时候,很多时候需要对接口进行测试,或者更方便的调用一些已有模块的接口,取到结果并进行后续操作,我们可以通过curl进行模拟提交post和get请求,来去实现这些功能. 之后就可以 ...

  5. 室内定位系列(一)——WiFi位置指纹(译)

    原文:<Advanced Location-Based Technologies and Services>--chapter 2 WiFi Location Fingerprint 作者 ...

  6. 为什么margin-top不是作用于父元素【margin外边距合并问题】

    coding时发现margin-top居然没作用于本元素上,而是作用到了父元素上. 原来是margin外边距合并导致的.以下是网上搬运来的知识: margin外边距合并详解:外边距合并现象在网页布局中 ...

  7. JSP内置对象之request对象【学习笔记】

    request对象是JSP中重要的对象,每个request对象封装着一次用户的请求,并且所有的请求参数都被封装在request对象中,因此request对象是获取请求参数的重要途径. 一.获取请求头与 ...

  8. Redis实战阅读笔记——开始

    Redis实战这本书,看完以后最大的不是redis本身的东西,而是作者面对实际问题的分析而给出的设计方案,可以看成NoSql设计的应用.个人从这方面收获很多,至于Redis本身的东西,这个就花一两个小 ...

  9. Entity Framework 使用Mysql的配置文件

    <?xml version="1.0" encoding="utf-8"?> <configuration> <configSec ...

  10. Java 中正确获取中文字符串长度

    /** * 获取字符串的长度,如果有中文,则每个中文字符计为2位 * * @param value * 指定的字符串 * * @return 字符串的长度 */ public static int l ...