zoukankan      html  css  js  c++  java
  • 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=12
    id=53
    id=89
    #id=13
    id=10
    id=43
    id=67
    #id=98
    id=76
    id=33
    id=86

    其中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=12
    #id=53
    id=89
    #id=13
    id=10
    #id=43
    id=67
    #id=98
    #id=76
    id=33
    #id=86
  • 相关阅读:
    技术文章阅读-Pi-Hole < 4.3.2 Command Injection & PrivEsc (CVE-2019-13051)
    技术文章阅读-d-link-routers-found-vulnerable-rce
    技术文章阅读-蜂网互联企业级路由器v4.31密码泄露漏洞
    使用mkcert工具自签https证书
    查询给定时间是否在当前周
    nodeJS 一些笔记
    手机端页面布局方案
    关于HTML5的应用缓存功能
    将伪数组转换为数组的方法
    Cookies的使用之购物车的实现
  • 原文地址:https://www.cnblogs.com/dcb3688/p/4608009.html
Copyright © 2011-2022 走看看