文件管理系统:用于扫描重复文件
程序员文章站
2022-11-30 14:15:59
# coding:utf-8import os"""作者:李天超日期:2020年6月29日版本:1.0功能描述: 用于管理激光下料工位的DXF文件, 1.批量更新 更新所有的DXF文件,使其所有的DXF文件都保持最新; 实现一个更新,全部最新。 2.批量删除 一次删除所有的旧DXF文件。"""def all_DXF_dict(file_dir="./"): """...
# 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
下一篇: 开源C++版本CGI库CGICC入门