Erstellen Ordner-Struktur dynamisch aus einem string
Ich arbeite an code, in der ich auch Ordner erstellen und Unterordner basierend auf einem string aus der Datenbank abgerufen. Es ist dynamisch; es könnte sein, eine Ebene, zwei Ebenen oder zehn.
Ich versuche, ersetzen Sie die Punkte durch Schrägstriche und erstellen Sie die korrekte Baum, aber der code unten wird den job nicht machen:
for x in i.publish_app.split('.'):
if not os.path.isdir(os.path.join(settings.MEDIA_ROOT, PATH_CSS_DB_OUT) + x + '/'):
os.mkdir(os.path.join(settings.MEDIA_ROOT, PATH_CSS_DB_OUT) + x + '/')
i.publish_app
ist, zum Beispiel 'apps.name.name.another.name'
.
Wie kann ich es tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Direkt aus die docs.
Verwenden
os.makedirs()
gibt es eine Beispiel, wenn Sie es brauchen, Verhalten sich wiemkdir -p
.Warum bist du nicht einfach das tut:
os.path.join(settings.MEDIA_ROOT, PATH_CSS_DB_OUT,x,"")
(Die letzten
,""
ist, um eine\
oder/
am Ende, aber ich glaube nicht, dass Sie es brauchen, um ein Verzeichnis)Ab von Python-3.5, es ist
pathlib.mkdir
:Diese rekursiv erstellt das Verzeichnis und nicht eine Ausnahme auslösen, wenn das Verzeichnis bereits existiert.
(nur als
os.makedirs
bekam eineexist_ok
Flagge ab python 3.2 e.gos.makedirs(path, exist_ok=True)
)