Un semplice modo di dividere le immagini che vengono dalla fotocamera, che spesso copio a caso, oppure vengono prese da programmi diversi: talvolta può essere necessario ridividerle per data, e in questo caso Python può dar mano. Lo script è semplice, anche troppo (per esempio, non considera il fatto che potrebbe volere ricopiare un file con lo stesso nome in una directory).
#!/usr/bin/python3
# -*- coding: utf-8 -*-
#
# smista le foto in una cartella dove sono state buttate
# a cialtrone :-)
import os, sys, glob, datetime, shutil
#
def processfile(fn):
t = os.path.getmtime(fn)
newpath = str(datetime.datetime.fromtimestamp(t))[:10].replace("-", os.sep)
newpath = os.path.join(percorso, newpath)
newfile = os.path.join(newpath, os.path.basename(fn))
# se non esiste la directory la crea
if not os.path.exists(newpath):
os.makedirs(newpath)
shutil.move(fn, newfile)
#
def lcasedir(sdir):
lista = glob.glob(os.path.join(sdir, "*.*"))
if len(lista) > 0:
for fl in lista:
fname = os.path.join(sdir, fl)
ext = os.path.splitext(fname)[1]
if ext != ext.lower():
if ext.lower() == ".jpg":
try:
shutil.move(fname, os.path.splitext(fname)[0] + ".jpg")
except:
print ("Errore nel rinominare il file")
#
def scandir(sdir):
lista = glob.glob(os.path.join(sdir, "*.jpg"))
if len(lista) > 0:
for fl in lista:
fname = os.path.join(sdir, fl)
processfile(fname)
if __name__ == "__main__":
global percorso
percorso = "/home/me/immagini"
lcasedir (percorso)
scandir (percorso)
print ("Fatto!")