​ win10自带照片软件导入iphone图片时抽风了,当时没多想,多试了几次,结果目录下多了一堆重复的照片。照片没有特别命名,导致手工查重非常辛苦。想着python3的环境装在电脑上没咋用过,就试着写了个脚本。第一次写,如果有错误欢迎指正。

CalculateFileHash()函数参考abitfree博主,原文地址

命令格式:python clean.py -p [dir_path]

对文件直接操作!!谨慎使用!!

#clean.py
#2020.12.26
import hashlib
import os
import argparsedef CalculateFileHash(file):#计算文件的哈希值,此处用MD5,可选SHA-1。MD5生成的哈希值短一些,更快。f = open(file, "rb")content = f.read()m = hashlib.md5()#m = hashlib.sha1()m.update(content)s = m.hexdigest()del mf.close()return sdef CalculateRepeatFile(path):white_dict = {} #不需删除的文件black_list = [] #需要删除的文件count = 1try:for root, dirs, files in os.walk(path):for file in files:file_path = os.path.join(root, file)hash_code = CalculateFileHash(file_path)if white_dict.get(hash_code, 0) == 0:#检查文件的哈希值是否存在。存在说明该文件重复,需要删除,加入黑名单。不存在就加入白名单。white_dict[hash_code] = file_pathelse:black_list.append(file_path)print("%d files has been evaluated\r"%count,end="")count = count + 1print("\n")del white_dictreturn black_listexcept:print("\nerror!!")exit()def RemoveFile(file_list = []):#删除黑名单内的文件num = len(file_list)if num <= 0:print("no repeat file")exit()print("repeat files list: ")for path in file_list:print("%s"%path)print("\nremoving files:")for path in file_list:print("%d files left, removing %s\r"%(num, path), end='')os.remove(path)num = num - 1print("\nall done!!")def main():parser = argparse.ArgumentParser()parser.add_argument('-p', '--path', nargs='?', type=str, help = "the dir path you want to scan")args = parser.parse_args()p = args.pathif(p == None):print("input -h or --help to get manual")exit()elif os.path.exists(p) == False:print("no such dir!!")exit()path_list = CalculateRepeatFile(p)RemoveFile(path_list)if __name__ == "__main__":main()

enjoy it!!

示例:

python3删除重复文件,可用命令行相关推荐

  1. linux 删除文件中重复,linux系统删除重复文件

    fdupes:Linux中查找并删除重复文件的命令行工具fdupes是Linux下的一个工具,它由Adrian Lopez用C编程语言编写并基于MIT许可证发行,该应用程序可以在指定的目录及子目录中查 ...

  2. linux命令行如何上翻,Linux学习教程-获取可用命令行参数 or 文件上下翻转和左右翻转...

    导读 前面使用的,有几个用到了参数如ls -l, head -n 6等,需要注意的是跟参数之间要有空格. 获取可用命令行参数 终端运行man ls可以查看ls所有可用的参数,上下箭头翻页,按q退出查看 ...

  3. Win10中使用CMD命令遍历文件夹删除重复文件

    接上一篇<Win10中使用CMD命令遍历文件夹去除多余后缀名>,当修改完后缀名的时候发现,有些文件下载了两次,比如说同时存在video.mp4和video(1).mp4这两个文件,随便点开 ...

  4. linux删除文件text命令行,使用 Linux 文件恢复工具

    使用 Linux 文件恢复工具 Linux 系统管理员守则中有这么一条:"慎用 rm -rf 命令,除非你知道此命令所带来的后果",不过 Linux 下删除文件并不是真实的删除磁盘 ...

  5. python3 删除指定文件夹重复文件

    功能介绍:随着拍的照片和接收的各种文件越来越多,磁盘里各文件夹存在重复的文件,以下脚本可助你快速找到并删除重复文件,还你磁盘清洁. 注意:本代码判断文件是否重复的依据是文件名是否相同 ,相同则删除.不 ...

  6. 在Linux中查找和删除重复文件的4种方法

    大神教你在Linux中查找和删除重复文件的4种方法 在本教程中,您将学习如何使用rdfind和fdupes命令行工具以及称为DupeGuru和FSlint的GUI工具在Linux中查找和删除重复文件. ...

  7. Linux查找文本中的重复项,2在Linux中查找和删除重复文件的有用工具

    如果您有从互联网下载各种内容的习惯,组织您的主目录甚至系统可能会特别困难. 通常,您可能会发现已下载相同的mp3,pdf,epub(以及所有其他文件扩展名)并将其复制到不同的目录中. 这可能会导致您的 ...

  8. 删除重复文件的脚本代码

    测试环境 :centos7 ⚠️注意:该代码在Mac os系统下会因为参数问题报错 无参数"ls --time-style" "uniq -w" "m ...

  9. 重复文件导出html,分享|删除重复文件的神器:dupeGuru

    最近,我需要清理我父亲的文件和文件夹.有一个难题是,里面存在很多不正确的名字的重复文件.有移动硬盘的备份,同时还为同一个文件编辑了多个版本,甚至改变的目录结构,同一个文件被复制了好几次,名字改变,位置 ...

最新文章

  1. centos 重装 php5,centos6.6学习笔记:安装PHP5.5
  2. 大数据学习——sparkRDD
  3. java ceilingentry_java.util.TreeMap.ceilingKey()
  4. linux下的arm仿真,使用QEMU仿真ARM Linux系统
  5. Hotspot GC Root 对应调用链
  6. gitlab 端口_安装Gitlab-注意端口
  7. MariaDB一之编译安装MariaDB、MariaDB初始化及MariaDB的图形化工具
  8. The JRE you are running Eclipse with appears to not be a JDK .Spring Boot Live hovers will not work
  9. jde 动态添加筛选条件的注意事项
  10. 一文彻底看懂Base64原理(并使用java实现)
  11. Linux和DOS常用命令对照表
  12. 【69元】茗振 捶打按摩披肩100种模式 颈肩颈椎按摩器 腰部敲敲乐
  13. 一个屌丝程序员的青春(二四一)
  14. Skype for Business 中的键盘快捷方式
  15. 华为云sql工程师评测答题[青铜+白银]
  16. sql server嵌套查询
  17. 最好的乳胶枕头ventry T3
  18. JVM基础:什么是STW?
  19. 建筑施工数字孪生及其构建方法
  20. 我的左眼是超级计算机,神迹!雷神左眼失明,左臂被斩,这位“神医”却瞬间治好...

热门文章

  1. 天耀18期 -09.数组【作业】.
  2. 【线性代数】P1 行列式基本概念
  3. 养生品茶的30个心得
  4. STM32(八)W25Q(16/32/64/128)芯片学习总结
  5. excel怎么按颜色统计单元格个数
  6. 2022年二级建造师建设工程法规及相关知识考试每日一练及答案
  7. 程序员所使用的各种软件分享及破解
  8. 人工智能前景怎么样 用哪个开发语言比较好
  9. 安卓无线蓝牙耳机哪款好?实惠好用的蓝牙耳机品牌
  10. CodeForces - 1413C Perform Easily(双指针)