You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python3读取CSV文件时删除已处理的上一行

处理CSV文件时删除已完成行的Python方案

嗨,我来帮你搞定这个需求!你希望每处理完CSV里的一行维基页面任务,就把该行从文件中移除,这样剩下的待处理内容能直接分享给其他维基贡献者,不用手动删除对吧?

直接在读取文件的同时修改原文件很容易出问题(比如文件指针混乱、数据丢失),我推荐用临时文件中转的方式,安全又可靠。核心思路是:遍历原CSV的每一行,处理成功的行就跳过,未处理/处理失败的行写入临时文件,最后用临时文件替换原CSV。

下面是修改后的完整代码,我还加了异常处理,避免处理页面出错时误删任务行:

import csv
import pywikibot
import os
import tempfile

# 原CSV文件路径
csv_path = '0.csv'

# 创建临时文件,用来存储未处理的行
with tempfile.NamedTemporaryFile(mode='w', delete=False, newline='', encoding='utf-8') as temp_file:
    writer = csv.writer(temp_file, delimiter="~")
    
    with open(csv_path, 'r', encoding='utf-8') as csvfile:
        reader = csv.reader(csvfile, delimiter="~")
        
        for row in reader:
            # 保留你原有的行长度判断逻辑
            if len(row) == 8:
                wikiPage1 = row[0]
                indexPages = row[5]
                print(f"正在处理页面: {wikiPage1}")
                
                try:
                    # 维基页面修改操作
                    site = pywikibot.Site('ta', 'wiktionary')
                    page1 = pywikibot.Page(site, wikiPage1)
                    page1.text = page1.text.replace('Number','எண்')
                    page1.save(summary='Number --> எண்')
                    # 处理成功,不写入临时文件(相当于删除该行)
                    print(f"页面 {wikiPage1} 处理完成,已从待处理列表移除")
                except Exception as e:
                    # 处理失败,把该行写回临时文件,方便重试
                    writer.writerow(row)
                    print(f"页面 {wikiPage1} 处理失败,保留至待处理列表: {str(e)}")
            else:
                # 不符合格式的行,也写回临时文件
                writer.writerow(row)

# 用临时文件替换原CSV文件(原子操作,避免数据丢失)
os.replace(temp_file.name, csv_path)
print("所有任务处理完成,待处理列表已更新")

关键说明:

  • 使用tempfile.NamedTemporaryFile创建临时文件,避免手动管理临时文件路径
  • 异常捕获确保处理失败的页面不会被误删,能留在CSV里重试
  • os.replace是原子性操作,中途出错也不会损坏原文件
  • 全程指定encoding='utf-8',避免泰米尔文或其他字符出现乱码问题

这样处理后,每次运行脚本,原CSV里只会剩下未处理的行,你可以直接把这个文件分享给其他贡献者继续处理啦!

内容的提问来源于stack exchange,提问作者info-farmer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:21:27