MyTetra Share
Делитесь знаниями!
Сортировка фото по дате из EXIF
06.08.2018
22:33
Раздел: Python

Сортировка фото по дате из EXIF

Иногда на моем компьютере скапливается куча не сортированных фотографий. Хочется автоматически разгрести их по папкам с названиями типа "2015 март", "2016 июль".Для этой цели напишем программу на Python. При фотографировании, фотоаппарат обычно добавляет в JPG картинки EXIF информацию с датой фотографирования. Вытащив из EXIF дату мы сможем сортировать фотографии как нам захочется.Установим модуль для работы с EXIFpip install piexifСоздадим рядом с данным скриптом папку foto и наполним ее не сортированными фотографиями. Папка не должна включать в себя подкаталоги. Запустим скрипт и вскоре в папке обнаружим некоторое количество подкаталогов с именами вида "год-месяц", и соответствующими фото внутри.

import os

import piexif

import shutil


# Получаем список фотографий из указанной папки

# Папка должна лежать рядом с этим скриптом

directory = 'foto/'

files = os.listdir(directory)

files2 = filter(lambda x: x.endswith('.jpg') or x.endswith('.JPG'), files)

os.chdir('foto/')


# Перебираем каждый файл из списка фото и вытаскиваем из его EXIF дату фотографирования

for x in files2:

print(x)

# Проверяем чтобы файл не был папкой

if(os.path.isdir(x)==False):

try:

kartinka = piexif.load(x)

except Exception:

qq=None

else:

qq=None

for i in ("0th", "Exif", "GPS", "1st"):

for tag in kartinka[i]:

# Нам нужны EXIF теги DateTime и DateTimeOriginal

if((piexif.TAGS[i][tag]["name"]=="DateTime") or ((piexif.TAGS[i][tag]["name"]=="DateTimeOriginal"))):

qq=kartinka[i][tag]

if(qq==None):

# Еcли в EXIF нет даты то имя папки будет 0000

# В нее будут складываться фотки без даты в EXIF

g = "0000-00-00"

else:

qq = qq.decode("utf-8")

qq = qq[0:7]

qq = qq.replace(":", "-")

g = qq

z = g[5:7]


# Заменяем цифры месяца на его название

if(z=="01"):

zz="январь"

elif(z=="02"):

zz="февраль"

elif(z=="03"):

zz="март"

elif(z=="04"):

zz="апрель"

elif(z=="05"):

zz="май"

elif(z=="06"):

zz="июнь"

elif(z=="07"):

zz="июль"

elif(z=="08"):

zz="август"

elif(z=="09"):

zz="сентябрь"

elif(z=="10"):

zz="октябрь"

elif(z=="11"):

zz="ноябрь"

elif(z=="12"):

zz="декабрь"

else:

zz="no"

g=g[0:5] + zz

if (os.path.exists(g)!=True):

# Если папки не существует создаем ее

os.mkdir(g)

# Копируем фотку в папку и удаляем оригинал

shutil.copyfile(x, g + "/" + x)

os.remove(x)





Если у вас есть Android телефон, вы можете скачать наш учебник по Python

Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования