图片和视频批量重命名、EXIF信息移除——Python脚本

一直用LightRoom对图片进行批量重命名,写了一个轻量化脚本用于替代LightRoom。

格式:年月日_时间_原文件名

2022-03-11更新:新增移除 EXIF 信息的功能

import os
import time
import exifread
import piexif

PICTURE_EXTENSION = ['.jpg', '.jpeg', '.png', '.heic', '.dng', '.arw', '.cr2', '.nef']
MOVIE_EXTENSION = ['.mov', '.mp4']
CLEAR_EXIF_EXTENSION = ['.jpg', '.jpeg']


def rename_check(name, path):
    for check in os.listdir(path):
        if check == name:
            return True
    return False


def rename(path):
    for name in os.listdir(path):
        filepath = os.path.join(path, name)
        # 图片
        if (os.path.splitext(filepath)[-1]).lower() in PICTURE_EXTENSION:
            # 拍摄日期标签
            exif_tag = 'EXIF DateTimeOriginal'
            # 读取拍摄日期
            fd = open(filepath, 'rb')
            exif_info = exifread.process_file(fd)
            fd.close()
            # 如果存在 EXIF 信息则进行重命名
            if exif_tag in exif_info:
                # 时间格式
                time_name = str(exif_info[exif_tag]).replace(':', '').replace(' ', '_')
                # 最后生成的文件名
                new_name = time_name + '_' + name
                # 重名检查
                if rename_check(new_name, path):
                    print('[WARNING] 发现重名,为保证文件安全,跳过处理 {}'.format(name))
                    continue
                # 重命名
                os.rename(filepath, os.path.join(path, new_name))
                print('{} --> {}'.format(name, new_name))
            # 不存在 EXIF 信息
            else:
                print('[WARNING] 拍摄日期不存在 {}'.format(name))
        # 视频
        elif (os.path.splitext(filepath)[-1]).lower() in MOVIE_EXTENSION:
            # 读取视频信息
            movie_info = os.stat(filepath)
            # 获取修改日期
            modify_time = time.localtime(movie_info.st_mtime)
            # 时间格式
            time_name = time.strftime('%Y%m%d_%H%M%S', modify_time)
            # 最后生成的文件名
            new_name = time_name + '_' + name
            # 重名检查
            if rename_check(new_name, path):
                print('[WARNING] 发现重名,为保证文件安全,跳过处理 {}'.format(name))
                continue
            # 重命名
            os.rename(filepath, os.path.join(path, new_name))
            print('{} --> {}'.format(name, new_name))


def clear_exif(path):
    for name in os.listdir(path):
        filepath = os.path.join(path, name)
        if (os.path.splitext(filepath)[-1]).lower() in PICTURE_EXTENSION:
            piexif.remove(filepath)
            print('文件: {} 的 EXIF 信息已删除'.format(filepath))
    print('########## EXIF 删除确认信息 ##########')
    for name in os.listdir(path):
        filepath = os.path.join(path, name)
        if (os.path.splitext(filepath)[-1]).lower() in PICTURE_EXTENSION:
            print(piexif.load(filepath))


if __name__ == '__main__':
    print('1.重命名 (格式: 年月日_时分秒_原文件名)')
    print('2.删除 EXIF 信息')

    choice = input('请输入选项: ')

    # 重命名
    if choice == '1':
        print('####################')
        print('正在进行 \'重命名\' 操作')
        print('支持的文件格式: \n{}\n{}'.format(PICTURE_EXTENSION, MOVIE_EXTENSION))
        print('####################')
        running_path = input('请输入文件所在目录: ')
        check = input('请确认输入的目录: \'{}\' (Y确认): '.format(running_path))
        if check == 'Y':
            rename(running_path)
        else:
            print('操作已取消')

    # 删除 EXIF 信息
    elif choice == '2':
        print('####################')
        print('正在进行 \'删除 EXIF 信息\' 操作')
        print('支持的文件格式: \n{}'.format(CLEAR_EXIF_EXTENSION))
        print('####################')
        running_path = input('请输入文件所在目录: ')
        check = input('请确认输入的目录: \'{}\' (Y确认): '.format(running_path))
        if check == 'Y':
            clear_exif(running_path)
        else:
            print('操作已取消')

    else:
        print('输入错误')

好了,这下可以彻底抛弃LightRoom了,之前领取的正版 Luminar 4 已经够我业余娱乐使用。

本文采用 CC BY-NC-SA 4.0 协议
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇