Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Python für Systemadministratoren Grundkurs

Verzeichnisstrukturen modifizieren

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Die richtigen Rechte vorausgesetzt, lassen sich mit Python recht einfach ganze Verzeichnisstrukturen selektiv modifizieren.
04:42

Transkript

In dieser Lektion möchte ich Ihnen zeigen, wie Sie ganze Verzeichnisstrukturen modifizieren können. Die zentrale Funktion ist die Funktion "applyToFiles". Die erwartet als erstes Argument ein "dir", das ist das Verzeichnis, von dem Sie aus die ganze Verzeichnisstruktur modifizieren wollen. Dann "patterns", "patterns" sind die Dateien, für die Sie sich interessieren, die Lambda-Funktion "f", die ist hier in diesem Fall per default die Identität und Sie können sagen, ob Sie es rekursiv oder nicht-rekursiv machen wollen. Wenn Sie "applyToFiles" ohne spezielle Lambda-Funktion, diese sehen Sie hier mit "f", aufrufen, dann ist es nur die Identität. Das heißt, Sie bekommen raus, welche Dateien modifiziert werden würden. Jetzt stelle ich Ihnen genau die Funktion vor. Durch "patterns- patterns.split", werden die patterns an Leerzeichen gesplittet. Dann kommt die zentrale Funktion "os.walk(dir_)" zum Einsatz. "os.walk(dir_)" beginnt im Verzeichnis "dir" und traversiert rekursiv den ganzen Verzeichnisbaum. Für jedes das Verzeichnis, in dem sich os.walk(dir_) befindet, gibt es immer das Trippel raus: "path", "dirs" und "files". "path" drückt aus: wo steht "os.walk(dir_)"? "dirs": welche Unterverzeichnisse gibt es? Und "files": welche Dateien gibt es an dieser Stelle? Und jetzt iteriere ich weiter über alle "files", im nächsten Schritt auch über alle "patterns" und mit "fnmatch.fnmatch" stelle ich fest, ob mein "file" dem "pattern" genügt. Wenn ja, bau ich mir einen absoluten File-Namen zusammen mit "os.path.join(path, file_)", gib' die Datei aus und wende dann die Funktion "f", die Lambda-Funktion, auf die Datei an. Im Default-Fall passiert eben nichts, weil es eben die Identität ist, aber hier kann ich natürlich eine Funktion anwenden, die die Datei "file" modifiziert. Jetzt breche ich mit "break" aus dieser if-Schleife aus, da es natürlich vorkommen kann, dass "file" mehr wie einem Pattern genügt. Und das soll natürlich nicht eintreffen. Ja, und zum Schluss frag ich noch ab, ob die Schleife rekursiv ist. Wenn sie nicht-rekursiv ist, breche ich hier auch aus. Das will ich Ihnen gleich noch in der Anwendung zeigen. Zuerst importiere ich wieder die Funktionalität. Dann lege ich mir zwei Variablen an, um nicht so viel schreiben zu müssen. "sourcePath" ist die Stelle, von der ich lese und "destinationPath" ist die Stelle, wohin ich schreibe. Gut. Jetzt wende ich "applyToFiles" ohne spezielle Lambda-Funktion an, oder anders ausgedrückt, die Lambda-Funktion ist Identität, das heißt, wenn ich "applyToFiles" auf "sourcePath" anwende, os.getentv("HOME"), "python", mit dem pattern ".pyc" or ".o", dann hab ich in diesem Verzeichnis diese fünf Dateien, auf die mein "applyToFiles" angewendet werden würde. Und jetzt tue ich das tatsächlich und was mach' ich? Ich lösche die ganzen Dateien, indem ich eine Lambda-Funktion anwende, die die Datei löscht. Sie sehen hier auch gleichzeitig, welche Datei gelöscht wird, und wenn ich jetzt "applyToFiles" nochmals anwende, sehen Sie, jetzt gibt es keine Dateien mehr hier im Unterverzeichnis, die auf ".pyc" oder ".o" enden. Ich kann aber mit "applyToFiles" auch Dateien kopieren. Hier mach' ich ein Backup zum Beispiel. Indem ich sage, nimm alle Dateien vom source-Pfad, die auf ".py" enden und wende die Funktion "shutil.copy2" an. Eben, kopiere "f" nach "destPath" und "destPath", sehen Sie, ist "phyton_backup". Das wende ich jetzt an, Sie sehen hier, auf welche Dateien die Operation angewandt wird. Und jetzt zeige ich Ihnen das noch auf dem File-System. Ich habe hier ein Verzeichnis "python_backup". Jetzt klappt's. Und Sie sehen, diese Dateien habe ich gerade kopiert. In dieser Lektion habe ich Ihnen gezeigt, wie Sie ganze Verzeichnisbäume modifizieren können, indem Sie einerseits angeben, für welche Dateien Sie sich interessieren, andererseits angeben, ob Sie es rekursiv oder nicht-rekursiv machen wollen, und drittens auch angeben können, welche Operation Sie auf jeder Datei anwenden wollen.

Python für Systemadministratoren Grundkurs

Lernen Sie die zahlreichen Funktionen der Kernsprache und die wichtisgten Bibliotheken für den Administrationsalltag kennen.

1 Std. 53 min (22 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:10.03.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!