本文目录导读:

- 文本文件(如TXT、日志)按行去重
- CSV/表格数据(基于某列去重)
- 图片/文件去重(按MD5哈希)
- Excel (.xlsx) 多个工作表去重
- 终极通用方案:
dupefind或自定义 CLI 脚本 - 注意事项
文本文件(如TXT、日志)按行去重
适用场景:一个文件或批量文件中内容重复的行。
Shell 脚本(Linux/macOS)
#!/bin/bash
# 批量处理当前目录下所有 .txt 文件,按行去重后输出到新文件
for file in *.txt; do
sort "$file" | uniq > "${file%.txt}_unique.txt"
done
Python 脚本(跨平台,处理大文件)
import os
# 处理指定目录下所有 .txt 文件
for filename in os.listdir('.'):
if filename.endswith('.txt'):
with open(filename, 'r') as f:
lines = f.readlines()
# 利用 set 去重,但会失去顺序;如需保留顺序,用 dict.fromkeys
unique_lines = list(dict.fromkeys(lines))
with open(f'unique_{filename}', 'w') as f:
f.writelines(unique_lines)
CSV/表格数据(基于某列去重)
适用场景:Excel导出的CSV文件,按“ID”或“邮箱”列去重。
Python Pandas(保留第一行或最后一行)
import pandas as pd
import glob
# 批量处理所有CSV文件
for file in glob.glob("*.csv"):
df = pd.read_csv(file)
# 按“email”列去重,保留第一个(keep='last' 保留最后一个)
df_unique = df.drop_duplicates(subset='email', keep='first')
df_unique.to_csv(f'unique_{file}', index=False)
AWK 命令行(处理超大CSV,不加载内存)
# 按第一列去重,输出第一次出现的行 awk -F',' '!seen[$1]++' input.csv > output.csv
$1改为你要去重的列号(如$2表示第二列)
图片/文件去重(按MD5哈希)
适用场景:找出并删除完全相同的重复文件(图片、文档等)。
Python 脚本(遍历目录,找出重复文件)
import os
import hashlib
def get_md5(file_path):
h = hashlib.md5()
with open(file_path, 'rb') as f:
for chunk in iter(lambda: f.read(8192), b''):
h.update(chunk)
return h.hexdigest()
hashes = {}
for root, dirs, files in os.walk("目标目录"):
for name in files:
path = os.path.join(root, name)
md5 = get_md5(path)
if md5 in hashes:
print(f"重复: {path} <-> {hashes[md5]}")
# 可选:os.remove(path)
else:
hashes[md5] = path
命令行工具(无需编程)
- Linux:
fdupes -r .(列出重复文件,-d删除) - macOS:
brew install fdupes后同上 - Windows: 可用
dupeGuru(图形化)或PowerShell脚本
Excel (.xlsx) 多个工作表去重
适用场景:一个Excel文件内有多个Sheet,每个Sheet按行去重。
Python openpyxl
from openpyxl import load_workbook
wb = load_workbook('data.xlsx')
for sheet_name in wb.sheetnames:
ws = wb[sheet_name]
seen = set()
rows_to_delete = []
for row in ws.iter_rows(values_only=True):
# 假设去重依据是整行(可改为某列,如 row[0])
if row in seen:
rows_to_delete.append(row)
else:
seen.add(row)
# 逆向删除(从后往前删除行)
for row in rows_to_delete[::-1]:
for cell in row:
ws.delete_rows(cell.row)
wb.save('unique_data.xlsx')
终极通用方案: dupefind 或自定义 CLI 脚本
如果需要频率使用,可以编写一个通用脚本,支持参数:
python dedup.py --input *.txt --method md5 --output deduped/
注意事项
- 内存限制:大文件(>2GB)用
sort | uniq或数据库工具。 - :去重时明确“保留首次出现”还是“最后一次出现”。
- 确认删除:图片/文件去重时,建议先列清单,确认后再删除。
需要针对特定格式(如JSON、PDF内的文本)或更复杂的逻辑(如模糊匹配),可以补充说明,我可以给出更精准的脚本。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播