У меня был скрипт, который делал что-то еще, но его легко можно изменить, чтобы сделать то, что вы хотите (по крайней мере, в начальной части):
from PIL import Image
from PIL.ExifTags import TAGS
import sys
import os
import getopt
def get_exif_data(fname):
"""Get embedded EXIF data from image file."""
ret = {}
try:
img = Image.open(fname)
if hasattr( img, '_getexif' ):
exifinfo = img._getexif()
if exifinfo != None:
for tag, value in exifinfo.items():
decoded = TAGS.get(tag, tag)
ret[decoded] = value
except IOError:
print 'IOERROR ' + fname
return ret
def main(argv):
path = ''
outputfile = ''
try:
opts, args = getopt.getopt(argv,"hp:o:",["path=","ofile="])
except getopt.GetoptError:
print argv[0] + ' -p <path> -o <outputfile>'
print 'where:'
print '\t<path> is the root directory path for all the images'
print '\t<outputfile> is the CSV file to write to'
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print argv[0] + ' -p <path> -o <outputfile>'
sys.exit()
elif opt in ("-p", "--path"):
path = arg
elif opt in ("-o", "--ofile"):
outputfile = arg
if path == "" or outputfile == '':
print 'error: arguments missing'
sys.exit()
if not os.path.isdir(path):
print 'error: path entered is not a directory'
sys.exit()
photoCount = {}
for root, dir, files in os.walk(path):
for item in files:
if item.lower().endswith(".jpg"):
exif = get_exif_data(root + "\\" + item)
if 'DateTime' in exif.keys():
date = exif['DateTime'][:10].replace(":","-")
if date in photoCount.keys():
photoCount[date] = photoCount[date] + 1
else:
photoCount[date] = 1
outcsv = open( outputfile, 'w' )
for key in photoCount.keys():
outcsv.write(key + ',' + str(photoCount[key]) + '\n')
if __name__ == "__main__":
main(sys.argv[1:])
Когда я запускаю это в моей папке с образцами (с несколькими папками изображений), я получаю:
2011:06:21,6
2011:03:12,12
2012:03:09,168
2012:03:24,302
2011:08:27,58
2012:01:30,11
2012:02:13,848
2012:01:29,41
2012:01:21,7
2011:11:20,6
2012:01:24,25
2012:01:22,33
Конечно, это нужно отсортировать и все, но это можно открыть в Excel и манипулировать с этого момента.