Hardware Upgrade Forum

Hardware Upgrade Forum (https://www.hwupgrade.it/forum/index.php)
-   Programmazione (https://www.hwupgrade.it/forum/forumdisplay.php?f=38)
-   -   Controllare esistenza directory python (https://www.hwupgrade.it/forum/showthread.php?t=2955963)


genny92c 28-01-2022 17:20

Controllare esistenza directory python
 
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?
Codice:

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

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

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

Quote:

Originariamente inviato da genny92c (Messaggio 47728016)
ovviamente genera una eccezione visto che la cartella che già esiste

bene, io sfrutterei quella caratteristica


Tutti gli orari sono GMT +1. Ora sono le: 11:01.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Hardware Upgrade S.r.l.