Entra

View Full Version : Controllare esistenza directory python


genny92c
28-01-2022, 17:20
Salve ragazzi.
Ho un problema banale che tuttavia non riesco a risolvere.
Devo creare una directory e delle sottodirectory (una per ogni utente) basandomi su una lista di utenti che ho in un file json. in questo file gli utenti sono ripetuti.
per creare ho usato os.mkdir(), e fin qui tutto normale, però quando vado a controllare all'interno del for se la sottocartella da creare esiste già (lo faccio per evitare di fare un mkdir su una cartella già esistente che mi genererebbe un'eccezione) tramite il comando isdir(), questo mi resituisce valori falsi nonostante la cartella esista già.
Ho controllato la documentazione della funzione e viene specificato che la funzione resistuisce falso anche nel caso in cui non riesca effettivamente a controllare a causa di permessi non sufficienti, ma anche settando permessi completi usando chmod non riesco a far funzionare correttamente il tutto.
Qualcuno sa aiutarmi?

misterx
29-01-2022, 07:50
e se fai un mkdir su una directory esistente, cosa succede?

genny92c
30-01-2022, 12:05
ovviamente genera una eccezione visto che la cartella che già esiste

x_Master_x
30-01-2022, 13:11
E non puoi gestire l'eccezione?

try:
os.mkdir(dirname)
except OSError as e:
print(e)


Tra l'altro puoi verificare quale errore ti da, ad esempio errno.EACCES

errno.EACCES
Permission denied


Se ti da errno.EEXIST (File exists) allora puoi continuare con pass visto che la cartella esiste già, in caso contrario fai il raise. Un semplice if per gestire il tutto.

https://docs.python.org/3/library/errno.html

Ma in questa cartella puoi effettivamente scrivere visto che non riesci nemmeno a verificare se esiste o no? Controlla bene i permessi, chmod e chown

misterx
30-01-2022, 16:53
ovviamente genera una eccezione visto che la cartella che già esiste

bene, io sfrutterei quella caratteristica