# coding:utf-8
import os
import hashlib

""" 作者:李天超 日期:2020年6月29日 版本:1.0 功能描述: 用于管理激光下料工位的DXF文件, 1.批量更新 更新所有的DXF文件,使其所有的DXF文件都保持最新; 实现一个更新,全部最新。 2.批量删除 一次删除所有的旧DXF文件。 """


def all_DXF_dict(file_dir="./"):
    """ 功能描述: 扫描指定路径下的文件夹,列出所有的文件 依赖: import os :param: str 扫描路径 :return: dict 扫描结果 -扫描的结果 {"文件名称1":["路径1","路径2"],"文件名称2":["路径1","路径2"],"文件名称3":["路径1","路径2"],} """
    DXF_dict = {}

    # 扫描文件夹,列出所需要的文件

    for root, dirs, files in os.walk(file_dir):
        # print(root,'-' ,dirs,'-' ,files) # 当前目录路径
        # print() # 当前路径下所有子目录
        # print() # 当前路径下所有非目录子文件

        # 当前的文件名称:创建或添加
        for j in files:
            if j not in DXF_dict:
                DXF_dict[j] = [root]
            else:
                DXF_dict[j].append(root)
    print(DXF_dict)
    return DXF_dict


def HASH_contrast(file_A='./666.png', file_B='./新建文件夹 (2)/666.png'):
    """ 功能描述: 分辨两个文件是否为同一文件 通过哈希值得对比实现识别 :依赖: import hashlib :param: str,str 两个文件的路径 :return: bool 两个文件是否是一样的 -对比结果 """

    def get_file_md5(f):
        m = hashlib.md5()
        while True:
            # 如果不用二进制打开文件,则需要先编码
            # data = f.read(1024).encode('utf-8')
            data = f.read(1024)  # 将文件分块读取
            if not data:
                break
            m.update(data)
        return m.hexdigest()

    with open(file_A, 'rb')as f_a, open(file_B, 'rb')as f_b:

        a = get_file_md5(f_a)

        b = get_file_md5(f_b)

    print(a, b)
    return a == b


if __name__ == '__main__':
    all_DXF_dict()



本文地址:https://blog.csdn.net/qq_39057568/article/details/107144530