python3删除重复文件,可用命令行
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删除重复文件,可用命令行相关推荐
- linux 删除文件中重复,linux系统删除重复文件
fdupes:Linux中查找并删除重复文件的命令行工具fdupes是Linux下的一个工具,它由Adrian Lopez用C编程语言编写并基于MIT许可证发行,该应用程序可以在指定的目录及子目录中查 ...
- linux命令行如何上翻,Linux学习教程-获取可用命令行参数 or 文件上下翻转和左右翻转...
导读 前面使用的,有几个用到了参数如ls -l, head -n 6等,需要注意的是跟参数之间要有空格. 获取可用命令行参数 终端运行man ls可以查看ls所有可用的参数,上下箭头翻页,按q退出查看 ...
- Win10中使用CMD命令遍历文件夹删除重复文件
接上一篇<Win10中使用CMD命令遍历文件夹去除多余后缀名>,当修改完后缀名的时候发现,有些文件下载了两次,比如说同时存在video.mp4和video(1).mp4这两个文件,随便点开 ...
- linux删除文件text命令行,使用 Linux 文件恢复工具
使用 Linux 文件恢复工具 Linux 系统管理员守则中有这么一条:"慎用 rm -rf 命令,除非你知道此命令所带来的后果",不过 Linux 下删除文件并不是真实的删除磁盘 ...
- python3 删除指定文件夹重复文件
功能介绍:随着拍的照片和接收的各种文件越来越多,磁盘里各文件夹存在重复的文件,以下脚本可助你快速找到并删除重复文件,还你磁盘清洁. 注意:本代码判断文件是否重复的依据是文件名是否相同 ,相同则删除.不 ...
- 在Linux中查找和删除重复文件的4种方法
大神教你在Linux中查找和删除重复文件的4种方法 在本教程中,您将学习如何使用rdfind和fdupes命令行工具以及称为DupeGuru和FSlint的GUI工具在Linux中查找和删除重复文件. ...
- Linux查找文本中的重复项,2在Linux中查找和删除重复文件的有用工具
如果您有从互联网下载各种内容的习惯,组织您的主目录甚至系统可能会特别困难. 通常,您可能会发现已下载相同的mp3,pdf,epub(以及所有其他文件扩展名)并将其复制到不同的目录中. 这可能会导致您的 ...
- 删除重复文件的脚本代码
测试环境 :centos7 ⚠️注意:该代码在Mac os系统下会因为参数问题报错 无参数"ls --time-style" "uniq -w" "m ...
- 重复文件导出html,分享|删除重复文件的神器:dupeGuru
最近,我需要清理我父亲的文件和文件夹.有一个难题是,里面存在很多不正确的名字的重复文件.有移动硬盘的备份,同时还为同一个文件编辑了多个版本,甚至改变的目录结构,同一个文件被复制了好几次,名字改变,位置 ...
最新文章
- centos 重装 php5,centos6.6学习笔记:安装PHP5.5
- 大数据学习——sparkRDD
- java ceilingentry_java.util.TreeMap.ceilingKey()
- linux下的arm仿真,使用QEMU仿真ARM Linux系统
- Hotspot GC Root 对应调用链
- gitlab 端口_安装Gitlab-注意端口
- MariaDB一之编译安装MariaDB、MariaDB初始化及MariaDB的图形化工具
- The JRE you are running Eclipse with appears to not be a JDK .Spring Boot Live hovers will not work
- jde 动态添加筛选条件的注意事项
- 一文彻底看懂Base64原理(并使用java实现)
- Linux和DOS常用命令对照表
- 【69元】茗振 捶打按摩披肩100种模式 颈肩颈椎按摩器 腰部敲敲乐
- 一个屌丝程序员的青春(二四一)
- Skype for Business 中的键盘快捷方式
- 华为云sql工程师评测答题[青铜+白银]
- sql server嵌套查询
- 最好的乳胶枕头ventry T3
- JVM基础:什么是STW?
- 建筑施工数字孪生及其构建方法
- 我的左眼是超级计算机,神迹!雷神左眼失明,左臂被斩,这位“神医”却瞬间治好...