Python删除重复文件的脚本怎么写?Python如何进行循环冗余校验

在之前的一些文章之中小编已经给大家介绍过了python是如何去除文件夹下重复文件的,但是这种方法只是根据文件的名称和大小来判断的 。本次会给来分析一个全新的删除重复文件的python脚本,它是根据CRC32算法判断文件内容是否相同去删除的,一起往下看看吧 。

Python删除重复文件的脚本怎么写?Python如何进行循环冗余校验


1.在一个文件夹内新建python脚本文件并以英文命名,然后将其打开并使用import关键字将需要使用到的内置模块给导入,示例如下:
import osimport zlibimport glob这三个模块之中os是用来获取文件路径并且执行文件删除操作的,zlib模块里面能够使用crc32算法,而glob模块则是可以查找文件并使用通配符进行匹配 。
2.那么第二步就是要定义一个函数,这个函数的功能单一且简单,只需要传入一个文件即可 。在函数内会将文件打开然后每次只取出1024行文件中的数据,并将其通过crc32()方法转为hash值来压缩大小 。最后返回的数据就是文件的hash值,示例如下:
【Python删除重复文件的脚本怎么写?Python如何进行循环冗余校验】def crc32(file_path):    with open(file_path, 'rb') as f:        hash = 0        while True:            s = f.read(1024)            if not s:                break            hash = zlib.crc32(s, hash)        return "%08X" % (hash & 0xFFFFFFFF)3.第三步还是先定义函数,不过这个函数结构的参数就是文件夹路径了 。在函数里面先定义一个字典对象,这个字典对象是用来接收各个文件的hash值的 。再声明for循环结构并且对文件夹内的每一个文件都调用crc32()函数,再通过if条件判断本次循环之中是否已经有和字典内相同的键,有的话就使用os模块的remove()方法将其删除,示例如下:
def scanning_floder(glob_path):    crc32Dict = {}    for fname in glob.glob(glob_path, recursive=True):        if os.path.isfile(fname):            crc = crc32(fname)            if crc in crc32Dict:                os.remove(fname)以上就是关于“Python删除重复文件的脚本怎么写?Python如何进行循环冗余校验”的全部内容了,希望对你有所帮助 。

    猜你喜欢