最近准备把近几年手机里面存储的照片按年份分类存储到硬盘里面,不知不觉累积了4000多张照片,人工一张张分类实在是太费时间、也容易出错。好在每一张照片的属性里面都记录了拍摄时间,用python很容易就能获取到每一张照片拍摄的年份。然后用年份建立相应的文件夹,把照片移动到对应年份的文件夹就好了。
几点细节:
- 如果是用mac的“照片”软件导出照片的话,一定要选择导出“未修改的原片”,不然会丢失原片的拍摄时间;
- 实际操作的时候,有一部分重复照片,我们用emove_repetition()函数来去除重复的照片。
详细代码如下:
import glob
import os
import exifread
import time
import datetime
import shutil
def remove_repetition(filenames,filenames_back):
#删除重复的文件
i =0
for _ in filenames_back:
if _.find('(1)') > 0 or _.find('(2)') > 0:
print(_)
os.remove(_)
filenames.remove(_)
i += 1
print(i)
def TimeStampToTime(timestamp):
#转换时间格式
timeStruct = time.localtime(timestamp)
# return time.strftime('%Y-%m-%d %H:%M:%S',timeStruct)
return time.strftime('%Y',timeStruct)
def get_FileCreateTime(filePath):
#获取文件创建时间
# filePath = unicode(filePath,'utf8')
t = os.path.getmtime(filePath)
return TimeStampToTime(t)
def My_main():
#获取当前文件夹下面的所有文件,不包含文件夹
filenames = [x for x in glob.iglob("*.*", recursive=False)]
filenames.remove('solve.py')
#设置工作路径
curr_path = os.getcwd()
#去除重复的文件
filenames_back = filenames[::]
remove_repetition(filenames, filenames_back)
#根据文件的创建时间对文件分类
for file in filenames:
os.chdir(curr_path)
year = get_FileCreateTime(file)
if not os.path.exists(year):
os.makedirs(year)
print('Create '+year+' success')
des_path = year + '/' + file
shutil.move(file, des_path)#移动文件或文件夹
if __name__ == "__main__":
My_main()
网友评论