Seite 1 von 1
makedirs() super mkdir -> problem
Verfasst: Freitag 3. März 2006, 14:51
von MatMat
Hallo
ich habe ein directory z.B /usr/bin
jetzt möchte unter diesem directory auf einen schlag IN EINER SCHLEIFE z.B die pfade /ich/bin/hier und /du/bist/dort
generieren.
wie kann ich das bewerkstelligen ?
makedirs kann ich nicht in die schleife packen weil bei nächster iteration der pfad schon existiert ? Wie kann ich vorgehen ?
Verfasst: Freitag 3. März 2006, 15:36
von modelnine
Die Frage macht keinen Sinn, weil
1) die Verzeichnisse die Du erstellen willst ja wohl anscheinend nicht im root liegen, aber sie trotzdem ein slash vorneweg haben, und
2) was eine Schleife damit zu tun haben soll verstehe ich nicht, weil makedirs() eigentlich einen Verzeichnisbaum erstellt als ganzes, also die (notwendige) Schleife vor Dir kapselt, und
3) man in /usr/bin keine Verzeichnisse reinpackt, dazu ist /usr/share (für Programmdaten) und /usr/lib (für Programmlibs) da...
Bitte poste ein bissel mehr Beispielcode...
Re: makedirs() super mkdir -> problem
Verfasst: Freitag 3. März 2006, 16:13
von gerold
MatMat hat geschrieben:Hallo
ich habe ein directory z.B /usr/bin
jetzt möchte unter diesem directory auf einen schlag IN EINER SCHLEIFE z.B die pfade /ich/bin/hier und /du/bist/dort
generieren.
Hi MatMat!
Code: Alles auswählen
import os
import os.path
dirs = (
r"C:\_Ablage\uuu",
r"C:\_Ablage\uuu\a",
r"C:\_Ablage\uuu\b",
r"C:\_Ablage\uuu\c",
r"C:\_Ablage\uuu\a\a",
r"C:\_Ablage\uuu\b\b",
r"C:\_Ablage\uuu\c\c",
)
for dir in dirs:
if not(os.path.isdir(dir)):
os.makedirs(dir)
Auf Linux-Pfade kannst du es dir sicher selber anpassen.
mfg
Gerold

Verfasst: Montag 6. März 2006, 10:20
von MatMat
danke für die antworten...:
1) die Verzeichnisse die Du erstellen willst ja wohl anscheinend nicht im root liegen, aber sie trotzdem ein slash vorneweg haben, und
2) was eine Schleife damit zu tun haben soll verstehe ich nicht, weil makedirs() eigentlich einen Verzeichnisbaum erstellt als ganzes, also die (notwendige) Schleife vor Dir kapselt, und
3) man in /usr/bin keine Verzeichnisse reinpackt, dazu ist /usr/share (für Programmdaten) und /usr/lib (für Programmlibs) da...
zu 1) ok so habe ich mich falsch ausgedrückt...es sollte heißen: /usr/bin/ich/bin/hier
und /usr/bin/du/bist/dort
zu 2) ich möchte eben mehr als 1 unterdirectory erstellen (es können auch 2 3 4 oder 100 sein) und das eben unter einem existierenden directory
zu 3) das stimmt. Aber ich wollte nur ein beispiel geben...in usr/bin erstelle ich nichts.
dann halt als beispiel: /home/ggg/test/test1
von mir aus...
und da soll jetzt entstehen:
/home/ggg/test/test1/ich/du
/home/ggg/test/test1/da/aber
/home/ggg/test/test1/hier/und
/home/ggg/test/test1/abc/dev
Verfasst: Montag 6. März 2006, 14:05
von Kolazomai
Hi,
Was ist , wenn du einfach mit 2 Dictionaries / Mengen machst ? ( Bin ein Fan von sowas

)
Code: Alles auswählen
import os
menge_1 = ["ich","du","er","sie","es"]
menge_2 = ["a","b","c","d","e"]
for x in range(len(menge_1)):
for y in range(len(menge_2)):
os.mkdir("/home/user/"+str(name_1[x])+"/"+str(name_2[y]))
je unterverzeichnis ein weiteres "dictionary" dazufügen , also name_3 und 1 schleife... wenn du weisst , wieviele Unterverzeichnisse du machen willst ^^
Hoffe, ich liege nicht falsch
Mfg,
Kolazomai
Verfasst: Montag 6. März 2006, 14:38
von Joghurt
Kolazomai hat geschrieben:
*Hust, Hust*
Das solltest du, wenn überhaupt, so schreiben:
Da du aber eh nur auf das jeweilige Element zugreifst, mach es einfach so:
Code: Alles auswählen
for x in menge_1:
for y in menge_2:
os.mkdir(os.path.join("/home/user", x, y)