Ciao lista, dopo tanto tempo di inattività, sto ricominciando a prendere in mano python, python 3.6.5 per la precisione e su debian unstable.
per riprendere un po' di dimestichezza, prima di riprendere in mano i progetti che stavo seguendo, soprattutto con genropy (sì, lo so che è per 2.7, ma io mi preparo anche per il 3.x), volevo rinfrescarmi un po' la memoria. sto facendo un programmino abbastanza stupido, che prendendo come sorgente una directory, ne fa la scansione e tutti i file immagine, che contengono i dati exif (se non li contengono, baro e gli assegno una generica "camera sconosciuta", crea nella directory di destinazione che gli passo una directory con il nome della camera e poi ci sposta (nelle intenzioni) il file. quando però vado a fare le seguenti istruzioni, per verificare se esiste la directory, prima di crearla, quando incontra un particolare file, mi crasha, con il seguente errore: Traceback (most recent call last): File "./RinominaFoto.py", line 80, in <module> scan_dir(args) File "./RinominaFoto.py", line 67, in scan_dir if not os.path.exists(os.path.join(args['destdir'], camera)): File "/usr/lib/python3.6/genericpath.py", line 19, in exists os.stat(path) ValueError: embedded null byte la riga incriminata è ovviamente: if not os.path.exists(os.path.join(args['destdir'], camera)): e presumo che l'errore stia nella varibile camera. in questo particolare file il valore, subito prima di crashare è il seguente: camera = "DigitalDigital HH" e non ci vedo nessun carattere particolare che potrebbe essere nullo e mandare in crash l'istruzione precedente. come posso debuggare questo codice? def scan_dir(args): """ Scansiona la directory per ricercare i file da rinominare. """ from PIL import Image import os.path for root, dirs, files in os.walk(args['sourcedir']): for file in files: try: exif = Image.open(os.path.join(root, file))._getexif() print(os.path.join(root, file)) camera = get_exif_field(exif, "Make") if camera == 0: camera = "Nessuna Camera" elif camera is None: camera = "Camera Sconosciuta" # else: # camera = camera.upper().split(" ")[0] print(camera) if not os.path.exists(os.path.join(args['destdir'], camera)): os.makedirs(os.path.join(args['destdir'], camera)) except OSError: continue ribadisco che per altri file precedenti (con altre camere, quindi o in assenza di esse) tutto funziona... è proprio questa particolare stringa, ma in cui non ci vedo nulla di strano che blocca il tutto. c'é una qualche istruzione che potrebbe ripulire a priori questo genere di stringhe? Tnx&Byez -- Gollum1 - http://www.gollumone.it Tesssssoro, dov'é il mio tessssoro... _______________________________________________ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python