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

Python使用for循环对比两个CSV文件序列号并输出符合条件文件名咨询

原有代码问题
  • 变量赋值错误:收集两个文件的序列号时都存入了同一个file_serial_list,file1_serial_list和file2_serial_list全程为空,无法完成配对对比
  • 没有存储序列号和文件名的对应关系,对比完成后无法定位到符合条件的文件名
  • 按行索引配对的逻辑稳定性差,如果两个CSV的文件行顺序不一致,会出现匹配错误
优化实现代码

以下实现保留for循环逻辑,同时兼容两个CSV行顺序不一致的场景:

import csv

csv_file1 = r'csv_file.csv'
csv_file2 = r'csv_file(1).csv'

# 先读取第一个CSV,存为 文件名:序列号 的映射字典
file1_map = {}
with open(csv_file1, 'r', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    for row in reader:
        filename = row['filename'].strip()
        # 若序列号为十六进制格式,需要按数值对比的话可改为存转换后的值:int(row['file_serial_number'].strip(), 16)
        serial = row['file_serial_number'].strip()
        file1_map[filename] = serial

# 读取第二个CSV逐行对比
with open(csv_file2, 'r', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    for row in reader:
        filename = row['filename'].strip()
        serial2 = row['file_serial_number'].strip()
        # 仅对比两个文件共有的同名文件
        if filename in file1_map:
            serial1 = file1_map[filename]
            if serial1 > serial2:
                print(filename)

如果你的两个CSV文件行顺序完全一致、且文件名完全一一对应,也可以用逐行zip的方式实现,但上述字典映射的方案兼容性更强,无需依赖行顺序。

输出结果

运行代码即可得到预期输出:

file1
file2

内容的提问来源于stack exchange,提问作者pork_sinigang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:15:04