makedirs() super mkdir -> problem

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
MatMat
User
Beiträge: 11
Registriert: Mittwoch 1. März 2006, 17:34

makedirs() super mkdir -> problem

Beitragvon MatMat » Freitag 3. März 2006, 14:51

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 ?
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Beitragvon modelnine » Freitag 3. März 2006, 15:36

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...
--- Heiko.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: makedirs() super mkdir -> problem

Beitragvon gerold » Freitag 3. März 2006, 16:13

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
MatMat
User
Beiträge: 11
Registriert: Mittwoch 1. März 2006, 17:34

Beitragvon MatMat » Montag 6. März 2006, 10:20

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
Benutzeravatar
Kolazomai
User
Beiträge: 33
Registriert: Donnerstag 16. Februar 2006, 15:05
Kontaktdaten:

Beitragvon Kolazomai » Montag 6. März 2006, 14:05

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
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Beitragvon Joghurt » Montag 6. März 2006, 14:38

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)

Wer ist online?

Mitglieder in diesem Forum: mollyman