【Python小应用】8行代码实现文件去重

简介: 【Python小应用】8行代码实现文件去重

image.png

需求描述


上周突然接到一个任务,要通过XX网站导出XX年-XX年之间的数据,导出后的文件名就是对应日期,导出后发现,有的文件大小是一样,文件名不同,随便打开文件看了下,发现竟然两个不同文件名的文件内容是重复的,原因暂时不清楚,预测是网站的原因,最后发现大概只有 30% 的数据没有重复。我淦!


啥也不说,首要任务还是把那些没有重复的文件给筛选出来,或是删除重复的文件。文件很多几百个,通过一个个的对比文件去删除估计又要加班,然后突然想到 Python 有个内置的 filecmp 能够貌似是比较文件的,话不多说,直接开整~


撸代码ing


导出的文件都是保存在同一文件夹下的,格式也相同。然后,看了一下官方文档中 filecmp.cmp() 的用法。大致总结如下:

filecmp.cmp(f1, f2, shallow=True)

  • f1/f2:待比较的两个文件路径。
  • shallow :默认为 True,即只比较 os.stat() 获取的元数据(创建时间,大小等信息)是否相同,设置为 False 的话,在对比文件的时候还要比较文件内容。

为了防止代码有问题,我先创建了一个 test 文件夹,在文件夹下手动创建了 6 个文件,1~5 中只有 1,2,3,4,5 对应的数字内容,第6个为空文件。

image.png


之后再将文件全部复制一份。如下

image.png


测试代码

from pathlib import Path
import filecmp
path_list = [path for path in Path(r'C:\Users\pc\Desktop\test').iterdir() if path.is_file()]
for front in range(len(path_list) - 1):
    for later in range(front + 1, len(path_list)):
        if filecmp.cmp(path_list[front], path_list[later], shallow=False):
            path_list[front].unlink()    # 删除文件
            break
复制代码


运行效果

image.png

代码的整体逻辑十分简单,首先获取对应文件下的“所有文件”,这里“所有文件”指的是 test 目录下的第一级文件路径,如果 test 文件夹中有子文件夹,则不会获取子文件夹中的文件路径,同时由于指定了 path.is_file() ,所以 path_list 中只获取文件(txt、xlsx、csv、zip等)的路径。然后通过双层循环比较当前两个路径的文件内容是否相同,如果相同,则删除文件。


虽然代码量不多,但确实能够减少人工处理的时间,OK,完结撒花~



相关文章
|
7天前
|
存储 Python
INI文件介绍与Python处理指南
INI文件介绍与Python处理指南
|
5天前
|
存储 Python
一文让你搞懂 Python 的 pyc 文件
一文让你搞懂 Python 的 pyc 文件
28 15
|
7天前
|
Docker Python 容器
python检测docker compose文件是否正确
python检测docker compose文件是否正确
|
1天前
|
SQL 数据采集 数据可视化
深入 Python 数据分析:高级技术与实战应用
本文系统地介绍了Python在高级数据分析中的应用,涵盖数据读取、预处理、探索及可视化等关键环节,并详细展示了聚类分析、PCA、时间序列分析等高级技术。通过实际案例,帮助读者掌握解决复杂问题的方法,提升数据分析技能。使用pandas、matplotlib、seaborn及sklearn等库,提供了丰富的代码示例,便于实践操作。
101 64
|
1天前
|
数据采集 存储 数据挖掘
深入探索 Python 爬虫:高级技术与实战应用
本文介绍了Python爬虫的高级技术,涵盖并发处理、反爬虫策略(如验证码识别与模拟登录)及数据存储与处理方法。通过asyncio库实现异步爬虫,提升效率;利用tesseract和requests库应对反爬措施;借助SQLAlchemy和pandas进行数据存储与分析。实战部分展示了如何爬取电商网站的商品信息及新闻网站的文章内容。提醒读者在实际应用中需遵守法律法规。
100 66
|
1天前
|
监控 数据安全/隐私保护 Python
探索Python装饰器的本质与应用
本文深入探讨了Python中装饰器(Decorator)的工作原理、实际应用及其在软件开发中的重要性。通过浅显易懂的语言解释什么是装饰器,如何创建和运用装饰器来增强函数和类的功能。同时,文章还涵盖了一些高级主题,如带参数的装饰器、多层装饰以及装饰器的实际应用案例,帮助读者更全面地理解和掌握这一强大的编程工具。
6 1
|
5天前
|
数据挖掘 Python
【Python】应用:pyproj地理计算库应用
这篇博客介绍了 `pyproj` 地理计算库的应用,涵盖地理坐标系统转换与地图投影。通过示例代码展示了如何进行经纬度与UTM坐标的互转,并利用 `pyproj.Geod` 计算两点间的距离及方位角,助力地理数据分析。 安装 `pyproj`:`pip install pyproj`。更多内容欢迎关注本博客,一起学习进步! Pancake 🍰 不迷路。😉*★,°*:.☆( ̄▽ ̄)/$:*.°★* 😏
10 1
|
6天前
|
人工智能 IDE 开发工具
Python实行任意文件的加密—解密
Python实行任意文件的加密—解密
15 2
|
6天前
|
存储 数据安全/隐私保护 Python
Python常用数据结构——字典的应用
Python常用数据结构——字典的应用
11 2
|
7天前
|
人工智能 IDE 开发工具
Python实行任意文件的加密—解密
Python实行任意文件的加密—解密
15 1
下一篇
无影云桌面