亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python中使用md5sum檢查目錄中相同文件代碼分享

系統(tǒng) 1992 0

復(fù)制代碼 代碼如下:

"""This module contains code from
Think Python by Allen B. Downey

http://thinkpython.com

Copyright 2012 Allen B. Downey
License: GNU GPLv3 http://www.gnu.org/licenses/gpl.html

"""

import os

def walk(dirname):
??? """Finds the names of all files in dirname and its subdirectories.

??? dirname: string name of directory
??? """
??? names = []
??? for name in os.listdir(dirname):
??????? path = os.path.join(dirname, name)

??????? if os.path.isfile(path):
??????????? names.append(path)
??????? else:
??????????? names.extend(walk(path))
??? return names


def compute_checksum(filename):
??? """Computes the MD5 checksum of the contents of a file.

??? filename: string
??? """
??? cmd = 'md5sum ' + filename
??? return pipe(cmd)


def check_diff(name1, name2):
??? """Computes the difference between the contents of two files.

??? name1, name2: string filenames
??? """
??? cmd = 'diff %s %s' % (name1, name2)
??? return pipe(cmd)


def pipe(cmd):
??? """Runs a command in a subprocess.

??? cmd: string Unix command

??? Returns (res, stat), the output of the subprocess and the exit status.
??? """
??? fp = os.popen(cmd)
??? res = fp.read()
??? stat = fp.close()
??? assert stat is None
??? return res, stat


def compute_checksums(dirname, suffix):
??? """Computes checksums for all files with the given suffix.

??? dirname: string name of directory to search
??? suffix: string suffix to match

??? Returns: map from checksum to list of files with that checksum
??? """
??? names = walk(dirname)

??? d = {}
??? for name in names:
??????? if name.endswith(suffix):
??????????? res, stat = compute_checksum(name)
??????????? checksum, _ = res.split()

??????????? if checksum in d:
??????????????? d[checksum].append(name)
??????????? else:
??????????????? d[checksum] = [name]

??? return d


def check_pairs(names):
??? """Checks whether any in a list of files differs from the others.

??? names: list of string filenames
??? """
??? for name1 in names:
??????? for name2 in names:
??????????? if name1 < name2:
??????????????? res, stat = check_diff(name1, name2)
??????????????? if res:
??????????????????? return False
??? return True


def print_duplicates(d):
??? """Checks for duplicate files.

??? Reports any files with the same checksum and checks whether they
??? are, in fact, identical.

??? d: map from checksum to list of files with that checksum
??? """
??? for key, names in d.iteritems():
??????? if len(names) > 1:
??????????? print 'The following files have the same checksum:'
??????????? for name in names:
??????????????? print name

??????????? if check_pairs(names):
??????????????? print 'And they are identical.'


if __name__ == '__main__':
??? d = compute_checksums(dirname='.', suffix='.py')
??? print_duplicates(d)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲美女激情视频 | 在线观看香蕉免费啪在线观看 | 精品牛牛影视久久精品 | 国产福利资源 | 色综合久 | 亚洲欧美日韩一级特黄在线 | 91国自产精品中文字幕亚洲 | 亚洲精品久久久久久久网站 | 久久精品国产99久久香蕉 | 免费观看性欧美一级 | 四虎国产精品永久地址48 | 四虎www.| 国产美女一级高清免费观看 | 天天射夜夜操 | 亚洲成人在线视频观看 | 欧美一级视频在线观看 | 国产福利视频一区二区三区 | 五月天婷婷一区二区三区久久 | 国产精品视频福利视频网 | 中文字幕日韩精品一区口 | 欧美激情 在线 | 日本毛片大全 | 亚洲精品欧洲久久婷婷99 | 欧美激情精品久久久久久久 | 元龙第三季动漫在线观看免费版 | 日本亚洲欧美美色 | 五月天婷婷网址 | 国产福利在线观看永久免费 | 波多野结衣一区二区三区四区 | 久久成人视 | 91粉色视频在线观看 | 久久精品成人免费网站 | 久久久久免费精品视频 | 伊人伊色 | 久艾草国产成人综合在线视频 | 伊人网色 | 免费视频不卡一区二区三区 | 国内精品91久久久久 | 亚洲综合亚洲综合网成人 | 黄色录像一级毛片 | 日本免费人做人一区在线观看 |