This repository has been archived on 2026-01-07. You can view files and clone it, but cannot push or open issues or pull requests.
Files
resources/aabook/tools/tools_diff.py
2025-03-18 17:45:20 +08:00

64 lines
2.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import sys
import csv
def compare_files(file_a, file_b):
"""
比较两个文件,并输出差异
Args:
file_a (str): 文件 A 的路径
file_b (str): 文件 B 的路径
"""
try:
# 创建输出文件
with open('need_update.txt', 'w', newline='') as f_update, \
open('old_only.txt', 'w', newline='') as f_b_only:
writer_update = csv.writer(f_update, delimiter='\t')
writer_b_only = csv.writer(f_b_only, delimiter='\t')
# 读取文件 A
data_a = {} # 使用字典存储key为开始链接编码value为整行数据
with open(file_a, 'r') as f:
reader = csv.reader(f, delimiter='\t')
for row in reader:
data_a[row[6]] = row
# 读取文件 B
data_b = {}
with open(file_b, 'r') as f:
reader = csv.reader(f, delimiter='\t')
for row in reader:
data_b[row[6]] = row
# 比较并输出
for key, value in data_a.items():
if key not in data_b:
writer_update.writerow(value)
else:
if abs(int(value[8]) - int(data_b[key][8])) > 100:
writer_update.writerow(value)
for key, value in data_b.items():
if key not in data_a:
writer_b_only.writerow(value)
except FileNotFoundError:
print(f"文件不存在: {file_a}{file_b}")
except csv.Error as e:
print(f"CSV文件读取错误: {e}")
except Exception as e:
print(f"发生未知错误: {e}")
if __name__ == '__main__':
if len(sys.argv) != 3:
print("Usage: python script.py file_a file_b")
print("file_a : 新下载的列表,通常按照更新时间排序")
print("file_b : 以前下载的列表")
print("输出 need_update.txt : 需要更新的列表")
print("输出 old_only.txt : 仅在较早下载列表中的行,通常不应该有")
sys.exit(1)
file_a = sys.argv[1]
file_b = sys.argv[2]
compare_files(file_a, file_b)