我是靠谱客的博主 眼睛大水杯,最近开发中收集的这篇文章主要介绍python文件去重之递归去重-升级版,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

# -*- coding:utf-8 -*-
'''
CopyRight:@wjws
功能:
1. 递归扫描到所有的文件和文件夹
2. 读取扫描到的文件的MD5
3. 删除MD5相同的文件
4. 删除空的文件夹,递归删除,直到没有空文件夹为止
5. 记录删除的文件和文件夹的名称和路径
6. 自动跳过GBK错误的文件
'''
import os
import hashlib
import time
import sys
# 搞到文件的MD5
def get_ms5(filename):
m = hashlib.md5()
mfile = open(filename, "rb")
m.update(mfile.read())
mfile.close()
md5_value = m.hexdigest()
return md5_value
# 搞到文件的列表
def get_recursion_file(path):
recursion_list = []
for dirpath, dirnames, filenames in os.walk(path):
for filename in filenames:
recursion_list.append(os.path.join(dirpath, filename))
try:
print(filename)
except:
pass
return recursion_list
def get_urllist(base):
list = get_recursion_file(base)
return list
def del_empty_dir(path):
cnt = 0
for dirpath, dirnames, filenames in os.walk(path):
if not os.listdir(dirpath):
os.rmdir(dirpath)
cnt+=1
try:
print("删除文件夹"+dirpath)
with open("log_Del.txt", "a") as f:
f.write("删除文件夹"+dirpath)
f.write("rn")
except:
pass
else:
pass
return cnt
# 主函数
if __name__ == '__main__':
md5list = []
base = r'D:backup'
urllist = get_urllist(base)
print("test1")
for a in urllist:
md5 = get_ms5(a)
if (md5 in md5list):
os.remove(a)
try:
print("重复:"+a)
with open("log_Del.txt", "a") as f:
f.write("重复:"+a)
f.write("rn")
except:
pass
else:
md5list.append(md5)
while(del_empty_dir(base)):
pass

 

最后

以上就是眼睛大水杯为你收集整理的python文件去重之递归去重-升级版的全部内容,希望文章能够帮你解决python文件去重之递归去重-升级版所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部