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 :P

Mfg,

Kolazomai

Verfasst: Montag 6. März 2006, 14:38
von Joghurt
Kolazomai hat geschrieben:

Code: Alles auswählen

for x in range(len(menge_1)):
*Hust, Hust*
Das solltest du, wenn überhaupt, so schreiben:

Code: Alles auswählen

for item,index in enumerate(menge_1)
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)