写个小脚本讨媳妇儿开心

晚上媳妇儿整理儿子照片,整理了一部分说太累了;问她还有多少没整理,说还有几十个G…问怎么整理,说把图片根据生日按月份分开;我一听,明显是个小脚本就搞定的事情;虽然没怎么太写过python,不过撸起袖子就是干;一边查一边写,轻松搞定;一条命令,几十个G图片一会儿就分好了;媳妇儿很开心;

会写代码的意义不一定在于非要做多大的项目,生活中有些重复的体力活,写个脚本一劳永逸,其余的时间开开心心发呆也很好;

附代码,规范性差了点,自用轻拍;

 1 # -*- coding: UTF8 -*-
 2 
 3 import os
 4 import time
 5 import exifread
 6 import shutil
 7 import sys
 8 
 9 # 生日分隔日期
10 BIRTHDAY = 7
11 
12 # 原图片目录
13 ORIGINAL_DIR = 'original'
14 
15 # 分类结果目录
16 CLASSIFY_DIR = 'classify'
17 
18 
19 
20 # 获取图片时间
21 def getImageTime(imagePath):
22     FIELD = 'EXIF DateTimeOriginal'
23     fd = open(imagePath,'rb')
24     tags = exifread.process_file(fd)
25     fd.close()
26     # 有拍摄时间优先使用拍摄时间
27     if FIELD in tags:
28         imageTime = str(tags[FIELD]).replace(':', '-')[:10]
29         return imageTime
30     else:
31         state = os.stat(imagePath)
32         imageTime = time.strftime('%Y-%m-%d', time.localtime(state[-2]))
33         return imageTime
34 
35 
36 
37 # 00.简单检查下待处理图片目录
38 if not os.path.exists(ORIGINAL_DIR):
39     print('请将图片文件夹复制到original目录下')
40     sys.exit(-1)
41         
42 # 01.创建分类目录
43 if os.path.exists(CLASSIFY_DIR):
44     shutil.rmtree(CLASSIFY_DIR)
45 os.mkdir(CLASSIFY_DIR)
46         
47 # 02.遍历当前目录下的图片目录
48 for root, dirs, files in os.walk(ORIGINAL_DIR):
49     for image in files:
50         # 拼接文件路径
51         imagePath = os.path.join(root, image)
52         print(imagePath)
53         
54         # 获取文件时间
55         imageTime = getImageTime(imagePath)
56         
57         year = int(imageTime[:4])
58         month = int(imageTime[5:7])
59         day = int(imageTime[-2:])
60 
61         # 以生日做分隔,小于7号的归到上个月
62         if (day < BIRTHDAY):
63             month -= 1
64             # 1月归档到上个月,需要退年
65             if (month == 0):
66                 year -= 1
67                 month = 12
68         
69         # 生成该图片需要存储的目录
70         t = (year, month, BIRTHDAY + 1, 0, 0, 0, 0, 0, 0)
71         newTime = time.mktime(t)
72         newImageDirName = time.strftime('%Y-%m-%d', time.gmtime(newTime))
73         newImageDir = os.path.join(CLASSIFY_DIR, newImageDirName)
74         
75         # 如果目标目录不存在则创建
76         if not os.path.exists(newImageDir):
77             os.mkdir(newImageDir)
78         
79         dstImagePath = os.path.join(newImageDir, image)
80         
81         # 拷贝文件
82         shutil.copy2(imagePath, dstImagePath)

 

posted @ 2019-10-30 15:00  AlexAlex  阅读(272)  评论(0编辑  收藏  举报