• 写个小脚本讨媳妇儿开心


    晚上媳妇儿整理儿子照片,整理了一部分说太累了;问她还有多少没整理,说还有几十个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)
  • 相关阅读:
    spring对返回结果的拦截器
    mysql 8.0.15 的my.ini 配置
    利用apache 的PropertyUtilsBean 实现map和pojo相互转换
    给数字补0
    清空文件的内容 和 统计文件的大小的命令
    MySQL的replace函数的用法
    PHP Warning: Module 'modulename' already loaded in Unknown on line 0 的解决方法
    技术总监Sycx的故事
    编译PHP扩展的通用方法
    给大家推荐几本经典技术书籍
  • 原文地址:https://www.cnblogs.com/wanpengcoder/p/11764959.html
Copyright © 2020-2023  润新知