Seite 1 von 1
Shellscript soll Unterverzeichnisse erstellen - Hilfe
Verfasst: Montag 28. Januar 2013, 19:33
von pyth0ndev
Hallo Leute,
ich bin noch ein ganz mit Python bewandert und brauche ein wenig Hilfe. Ich habe ein kleines Shellscript geschrieben, welches Ein Hauptverzechniss (welches man selbst frei bennen kann) erstellt und darin nochmals Unterverzechnisse erstellt. Nun Möchte ich aber in diesen ebenfalls nochmals eine weitere Verzeichnisebene erstellen, jedoch will dies nicht ganz gelingen.
Code: Alles auswählen
import os
# Hauptverzeichnis bennen
majordir = input('Welchen Namen soll das Hauptverzeichnis erhalten: ')
# Hauptverzeichnis anlegen
os.makedirs(majordir)
# In erstelletes Verzeichnis wechseln
os.chdir(majordir)
folders = ["abc", "def", "ghi", "jkl"]
# Unterverzeichnisse erstellen
for folder in folders:
os.makedirs(folder)
# Verzeichnisse (siehe folders) werden erstellt, jedoch will ich in jedem Ordner von folders
# nochmals die Unterverzeichnisse "123" und 456 erstellen
# majordir
# +--abc
# +--123
# +--456
# +--def
# +--123
# +--456
#...usw.
Re: Shellscript soll Unterverzeichnisse erstellen - Hilfe
Verfasst: Montag 28. Januar 2013, 19:41
von /me
Warum nicht einfach:
Code: Alles auswählen
folders = ["abc/123", "abc/456", "def/123"]
# Unterverzeichnisse erstellen
for folder in folders:
os.makedirs(folder)
Die Liste kannst du dir dann dynamisch aufbauen.
Re: Shellscript soll Unterverzeichnisse erstellen - Hilfe
Verfasst: Dienstag 29. Januar 2013, 13:18
von peddy
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
folder1 = ["abc", "def", "ghi", "jkl"]
folder2 = ["123", "456"]
for record1 in folder1:
for record2 in folder2:
os.makedirs(record1 + '/' + record2)
Die Lösung ist nicht ideal, da sie so nur unter Linux läuft. Bei Windows muss du / gegen \ tauschen.
Re: Shellscript soll Unterverzeichnisse erstellen - Hilfe
Verfasst: Dienstag 29. Januar 2013, 13:35
von cofi
peddy hat geschrieben:Die Lösung ist nicht ideal, da sie so nur unter Linux läuft. Bei Windows muss du / gegen \ tauschen.
Oder man nimmt `os.sep` .. oder gleich `os.path.join`.
Re: Shellscript soll Unterverzeichnisse erstellen - Hilfe
Verfasst: Dienstag 29. Januar 2013, 13:47
von JonasR
peddy hat geschrieben:Die Lösung ist nicht ideal, da sie so nur unter Linux läuft. Bei Windows muss du / gegen \ tauschen.
Das ist nicht korrekt. Ich kann bei mir auch mit "forward"-slash arbeiten
Re: Shellscript soll Unterverzeichnisse erstellen - Hilfe
Verfasst: Dienstag 29. Januar 2013, 13:53
von /me
/me hat geschrieben:Die Liste kannst du dir dann dynamisch aufbauen.
So zum Beispiel:
Code: Alles auswählen
import itertools
import os
level_1 = ["abc", "def", "ghi", "jkl"]
level_2 = ["123", "456"]
for combi in itertools.product(level_1, level_2):
print(os.path.join(*combi))
Solltest du irgendwann noch eine dritte Ebene brauchen, dann brauchst du nur die Namen hinzufügen. Sonst ändert sich nichts.
Code: Alles auswählen
level_3 = ['Z', 'Y', 'X']
for combi in itertools.product(level_1, level_2, level_3):
Das ganze dann noch einmal etwas verdichtet führt zu folgendem Code.
Code: Alles auswählen
levels = [('abc', 'def', 'ghi', 'jkl'), ('123', '456'), ('Z', 'Y', 'X')]
for combi in itertools.product(*levels):
print(os.path.join(*combi))
Statt des
print würde man in diesem konkreten Anwendungsfall natürlich
os.makedirs() verwenden.
Edit: Alternativ könnte man noch yield verwenden.
Code: Alles auswählen
def folders(levels):
folder_pool = itertools.product(*levels)
for entry in folder_pool:
yield os.path.join(*entry)
for folder in folders(levels):
print('- {}'.format(folder))
Re: Shellscript soll Unterverzeichnisse erstellen - Hilfe
Verfasst: Dienstag 29. Januar 2013, 14:28
von peddy
JonasR hat geschrieben:peddy hat geschrieben:Die Lösung ist nicht ideal, da sie so nur unter Linux läuft. Bei Windows muss du / gegen \ tauschen.
Das ist nicht korrekt. Ich kann bei mir auch mit "forward"-slash arbeiten
Sorry, ich wollte keine Unwahrheiten verbreiten. Ich bin einfach zu wenig unter Windows unterwegs.
Re: Shellscript soll Unterverzeichnisse erstellen - Hilfe
Verfasst: Mittwoch 30. Januar 2013, 17:36
von pyth0ndev
Danke für eure zahlreichen Antworten. Dann werde ich doch gleich mal mein Script modifizieren.
Zudem kann ich nur sagen, das dieses Forum für Python-Begeisterte für alles rund um Python sehr gut ist
