怎么制作相册合集(用python按照XX年XX月去重整理手机拍摄的照片)

昨天晚上做了一件牛逼的事。这些年不时地备份拍的照片和视频,看了下居然10万+了。

重复的太多,浪费空间。

于是写了个小东西,根据拍照时间,文件名和文件大小,重新按照**年**月的格式重新整理了下,

保留了4万+

抖音相册合集要怎么做

现在好闲,忍不住嘚瑟下,

正在冷备份中

具体思路如下:

# 目标-整理所有照片到固定的文件目录 # 如果大小不一致保留,保留大的

放在同一个列表中,统计出来,总共多少个文件,让心里清楚

import shutil import os done=1 n = 1 m = 1 start_folder = "E:-待整理-" end_folder = 'E:test' # 统计源目录的文件,并计算出个数。放到一个列表start-list、 start_list = [] for root, folders, files in os.walk(start_folder): for file in files: start_list.append(os.path.join(root, file)) # print(file) for file in folders: start_list.append(os.path.join(root, file)) # print(file)

print(len(start_list))

# 目前startlist里保留了所有的文件,格式为:E:--冲印--IMG_20210919_152649.jpg

打印结果出来,看一下,是否有特殊的字符,进行批量替换

开始文件名去重,清理文件名,并创建目录,目录名的格式为年月(6位),如202108

for name in start_list: newname = name.split("")[-1] # 获取文件名 # 文件名整理。去掉img,mvimg,下换线等 filter1 = ['.mp4', '.avi', '.3gp', '.MOV', '.wmv'] filter2 = ['Screenshot'] filter3=['mmexport','microMsg.'] newname = newname.replace("_", "") .replace("IMG", "") .replace("img", "") .replace("MVIMG", "") .replace(".jpg", "") .replace("@", "") .replace(".db", '') .replace(".py", '') .replace("在重庆", "") .replace("微信图片", "") .replace("涂鸦Screenshot", "") .replace("和目", "") .replace("SMG9750", "") .replace("SMG9550", "") .replace("QQ图片", "") .replace("PANO", "") .replace("P21", "20100218") .replace("MVIMG", "") .replace("C36020", "20") if newname in filter1: newname = '视频文件合集' elif newname in filter2: newname = '--截图汇总--' elif newname in filter3: newname='微信导出的图片' else: newname = newname.split(".")[0][:6] os.chdir(end_folder) if not os.path.exists(newname): os.mkdir(newname) os.chdir(end_folder + newname) oldfolderlist = [] for root, folders, files in os.walk(end_folder + newname): for file in files: oldfolderlist.append(file) for file in folders: oldfolderlist.append(file) # if os.path.basename(name) in oldfolderlist: size_new = os.path.getsize(name) try: size_old = os.path.getsize(end_folder + '' + newname + '' + os.path.basename(name)) print("比较大小新文件:老文件", size_new, size_old) if size_old <= size_new: os.remove(end_folder + '' + newname + '' + os.path.basename(name)) print(f"删除第{m}个小文件") m += 1 except: pass try: shutil.copy2(name, end_folder + newname) done+=1 if 100000%done==0: print(f"现在进行了{done}张") except OSError as e: print('发现一个文件夹', n, e) n += 1

经过上面的处理,为防止出现错误而意外停止,所以做了一个跳过处理。

剩下的可以手动把同一年的文件夹放在一起了。

您可以还会对下面的文章感兴趣

使用微信扫描二维码后

点击右上角发送给好友