使用Python计算指定目录md5,根据md5找查到相同的文件并打印

实现代码如下:

#!/usr/bin/python
#*-*coding:utf8*-*

import os
import sys
import hashlib

def md5sum(data):
    with open(data, "rb") as f:
        md5 = hashlib.md5()
        for i in f.read(4096):
            if i:
                md5.update(i)
            else:
                break
        md5 = md5.hexdigest()
        return md5

"""在指定字典中查找指定的key,如果存在就把值追加到这个key对应的value中,并以列表保存
如果不存在就添加一个新元素,同样value也是以列表形式保存"""
def add(dic, key, value): 
  dic.setdefault(key, [ ]).append(value)

def _files(data):
    dir = os.walk(data)
    dic1 = {}
    for x, y, z in dir:
        for i in z:
            file_path = os.path.join(x, i)
            add(dic1, md5sum(file_path), file_path)
    for i in dic1:    #对字典进行循环如果有相同的文件就打印出其md5和文件名
        if len(dic1[i]) > 1:
             print(i, dic1[i])
    
if __name__ == "__main__":
    _files(sys.argv[1])

运行结果如下:

时间: 2024-11-10 08:06:07

使用Python计算指定目录md5,根据md5找查到相同的文件并打印的相关文章

Python扫描指定目录下(包括子目录)的文件

扫描指定目录下的文件,或者匹配指定后缀和前缀的函数. 如果要扫描指定目录下的文件,包括子目录,调用scan_files("/export/home/test/") 如果要扫描指定目录下的特定后缀的文件(比如jar包),包括子目录,调用scan_files("/export/home/test/", postfix=".jar") 如果要扫描指定目录下的特定前缀的文件(比如test_xxx.py),包括子目录,调用scan_files("

Python计算一个目录下的所有文件的md5值,在Linux系统下面

实现代码如下: #!/usr/bin/python #*-*coding:utf8*-* import os import sys import hashlib def md5sum(data):     with open(data, "rb") as f:         md5 = hashlib.md5()     #赋空值         for i in f.read(4096):    #防止遇到大文件打开太占用内存,所以一次打开4096字节             if

python查找指定目录下所有文件,以及改文件名的方法

一: os.listdir(path) 把path目录下的所有文件保存在列表中: >>> import os>>> import re>>> path = "/home/popt/fiile">>> print (os.listdir(path))['Temp.conf', 'del2.py', 'ha.conf.bak', 'ha.conf', 'del.py', 'rename.py']>>>

python 替换指定目录下,所有文本字符串

网页保存后,会把js文件起名为.下载,html里面的引用也会有,很不美观,解决方案:用python替换字符串 import os import re """将当前目录下所有文档进行替换操作""" def change_str(path): str_pattern = r"\.下载" str_new = r"" path_list = os.listdir(path) for file in path_lis

python删除指定目录下的指定文件和文件夹

具体代码: #coding:utf-8import os,sys,platformclass RemoveTagFile(object): path=None def removeFile(self,path,remove_list,retain_list): #path后面要跟/ self.path=path system_test=platform.system() if(system_test=='Windows'): path_last=self.path[-1] if(path_las

python获取指定目录下的所有指定后缀的文件名

使用到的函数有: os.path.splitext():分离文件名与扩展名 os.path.splitext(file)[0] 获得文件名 os.path.splitext(file)[1] 获得文件扩展名

python实现指定目录下JAVA文件单词计数的多进程版本

要说明的是, 串行版本足够快了, 在我的酷睿双核 debian7.6 下运行只要 0.2s , 简直是难以超越. 多进程版本难以避免大量的进程创建和数据同步与传输开销, 性能反而不如串行版本, 只能作为学习的示例了. 以后再优化吧. #------------------------------------------------------------------------------- # Name: wordstat_multiprocessing.py # Purpose: stati

Python 实现指定目录下 删除指定大小的文件

import os, sys from stat import * BIG_FILE_THRESHOLD = 6000L #1000000L dict1 = {} # dict2 = {} # def treewalk(path): try: for i in os.listdir(path): mode = os.stat(path+"/"+i).st_mode if S_ISDIR(mode) <> True: filename = path+"/"

python 之遍历目录树(可匹配输出特定后缀的文件)

涉及到的模块有os, fnmatch:1.通过os模块中的方法获取dir.subdir.files,通过os.path.join可拼接成完整路径: 2.fnmatch主要通过fnmatch.fnmatch(name, patterns),在patterns中匹配name元素,用于获取特定后缀的文件. 可将这一功能代码封装,以便后续调用: 1 #!/usr/bin/env python 2 import os, fnmatch 3 4 def all_files(root, patterns='*