#!/usr/bin/env python # This script requires EXIF.py, available at: # http://home.cfl.rr.com/genecash/digital_camera/EXIF.py # # Example usages: rename-by-exif-date.py *.JPG # rename-by-exif-date.py 100CANON/ import os, sys, glob, EXIF # fix EXIF date strings into usable filenames def mungedate(date): date = str(date) date = date.replace(' ', '_') date = date.replace(':', '-') return date # make a list of files from command line args filelist = [] for i in sys.argv[1:]: if os.path.isdir(i): filelist = filelist + (glob.glob(os.path.join(i, '*.*'))) elif os.path.isfile(i): filelist.append(i) # get the EXIF data and rename by date for pathname in filelist: # status print "Renaming %s..." % pathname # name/path parts dirname, filename = os.path.split(pathname) basename, extension = os.path.splitext(filename) # open and get EXIF data f = open(pathname, 'rb') tags = EXIF.process_file(f) # rename if tags.has_key('EXIF DateTimeOriginal'): newname = mungedate(tags['EXIF DateTimeOriginal']) os.rename(pathname, os.path.join(dirname, newname)+extension.lower())