[Python] ValueError: embedded null byte

Alessandro Dentella sandro a e-den.it
Mer 4 Apr 2018 08:56:19 CEST


> 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"

Se fosse veramente quello il valore della variabile 'camera' non ci
sarebbero problemi:

   $ ipython3

   In [1]: import os

   In [2]: camera = "DigitalDigital HH"

   In [3]: os.path.exists(os.path.join('/tmp', camera))
   Out[3]: False

Per prima cosa aggiungerei nel try/except:

   import ipdb; ipdb.set_trace()

così sperimenti direttamente e ti fai un'idea chiara.
len(camera) ti restituisce 17 o la variabile ha qualche carattere non
rappresentato magari nella tua codifica? Prova con repr(camera)

L'istruzione va in eccezione anche nel debugger?

>             except OSError:
>                 import ipdb; ipdb.set_trace()
>                 continue


sandro
*:-)


Maggiori informazioni sulla lista Python