在大量文件中,有时会存在名称不同,但是内容却相同的文件,此时单单凭文件名是没办法区分开的,所以可以尝试,对文件内容进行md5加密,每个文件,只要其内容完全相同,生成的md5值是一样的,但是要保证文件的编码格式一致。得到md5值之后,以唯一的md5值进行文件命名,重新保存,此时则可以保证内容相同的文件有完全相同的文件名。下面是python实现的一种方式:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import hashlib
import os
import time
path = "../data/excel/0712_test.xlsx"
save_dir = '../data/md5_dir/'
def save_file_md5(file_obj, save_dir):
file_obj_tmp = file_obj.read()
name_sufix = 'xlsx'
hash_md5 = hashlib.md5()
hash_md5.update(unicode(file_obj_tmp, errors='ignore'))
md5_code = hash_md5.hexdigest()
md5_name = md5_code + '.' + name_sufix
time_stamp = time.localtime(int(time.time()))
time_today = time.strftime("%Y-%m-%d", time_stamp)
final_dir_path = save_dir + time_today
if not os.path.exists(final_dir_path):
os.makedirs(final_dir_path)
save_name = os.path.join(final_dir_path, md5_name)
with open(save_name, 'wb') as f:
f.write(file_obj_tmp)
print md5_code
return md5_code
if __name__ == '__main__':
save_file_md5(open(path, 'rb'), save_dir)
上面代码实现的功能就是以唯一的md5值+原始文件后缀名对文件重新命名,并按照日期将新文件保存到文件夹中。