In einem vorherigen Tutorial habe ich darüber gesprochen, wie wir Dateien lesen, öffnen, schließen und schreiben können. In diesem Tutorial gehe ich weiter und bespreche verschiedene Vorgänge, die wir für Dateien und Verzeichnisse (Ordner) ausführen können..
Sie wissen zum Beispiel, dass wir häufig Dateien verwenden, und das Arbeiten mit Dateien geht über das Öffnen und Schließen der Datei hinaus. Erinnern Sie sich, wie oft Sie diese bestimmte Datei kopiert haben? Oh, oder als Sie die von einer Website heruntergeladene Datei umbenannt haben, weil sie einen sinnlosen Namen hatte? Dies sind einige Arten von Operationen, die ich in diesem Tutorial besprechen werde.
Bereit? Dann kommen wir zum Punkt und beginnen, interessante Dinge mit unseren Dateien und Verzeichnissen zu tun, die Python verwenden!
shutil
(Shell-Dienstprogramme) ist der Name des Moduls, das in diesem Lernprogramm verwendet wird, um verschiedene Datei- und Verzeichnisoperationen auszuführen. shutil
Die Python-Installation ist bereits im Lieferumfang enthalten. Sie müssen sie also nicht manuell installieren. Um dieses Modul nutzen zu können, müssen Sie nur noch etwas tun einführen
das Modul:
Shutil importieren
Beginnen wir mit unserer ersten Operation, Dateien kopieren. Dazu verwenden wir die Kopieren()
Funktion aus der shutil
Modul. Ich werde die Datei sample.pdf in den Beispielen dieses Tutorials verwenden. Sie können diese Datei kostenlos herunterladen oder eine beliebige Datei verwenden.
Das folgende einfache Skript zeigt Ihnen, wie Sie kopieren sample.pdf
vom Desktop (wo er sich ursprünglich befindet) in ein anderes Verzeichnis Temp
, welches sich auch auf dem Desktop befindet:
shutil shutil.copy importieren ('sample.pdf', 'Temp')
Beachten Sie, dass ich nur den Dateinamen und den Verzeichnisnamen aufgeführt habe, da ich mit meinem Terminal arbeite, wobei der Desktop der Pfad ist, den ich verwende. Sie können stattdessen den vollständigen Pfad zu der Datei angeben, die Sie kopieren möchten, und dem Verzeichnis, in das Sie die Datei kopieren möchten. Dies ist in meinem Fall wie folgt:
shutil.copy ('/ Benutzer / Abder / Desktop / sample.pdf', '/ Benutzer / Abder / Desktop / Temp')
Mach weiter, öffne die Temp
Verzeichnis oder eines von Ihnen angegebenen Verzeichnisses, und Sie sollten die kopierte Datei dort finden!
Was wäre, wenn das zweite Argument eine Datei anstelle eines Verzeichnisses wäre? Mit anderen Worten, Sie haben folgendes eingegeben (ich habe den vollständigen Pfad zu den Dateien entfernt, vorausgesetzt, beide befinden sich auf dem Desktop):
shutil shutil.copy importieren ('sample.pdf', 'file.pdf')
In diesem Fall haben Sie eine neue Datei file.pdf
, Dies ist eine Kopie der Originaldatei sample.pdf
. Also, wenn Sie sich öffnen file.pdf
, Sie werden feststellen, dass es den gleichen Inhalt hat, weil es tatsächlich eine Kopie von ist sample.pdf
.
Können Quelle und Ziel gleich sein? Lass es uns versuchen und sehen.
shutil.copy ('sample.pdf', 'sample.pdf')
)
Es scheint, dass diese Operation zu einem Fehler führt, da die Dateinamen nicht gleich sein sollten:
Traceback (letzter Aufruf zuletzt): Datei "test.py", Zeile 2, inshutil.copy ('sample.pdf', 'sample.pdf') Datei "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py "Zeile 119, in Kopie copyfile (src, dst) Datei" /usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py " 69, in copyfile Erhöhung Fehler ("% s" und "% s" sind die gleiche Datei "% (src, dst))" shutil.Error: "sample.pdf" und "sample.pdf" sind die gleiche Datei
In diesem Abschnitt werden wir sehen, wie wir ein ganzes Verzeichnis (Ordner) anstatt einer einzelnen Datei kopieren können, wie wir im vorherigen Abschnitt gesehen haben.
Nehmen wir an, wir haben die folgende Verzeichnisstruktur, die wir kopieren möchten. Das heißt, wir haben ein Hauptverzeichnis Original
, welches ein Verzeichnis enthält Original-1
, welches das Verzeichnis enthält Original-2
, und welches das Verzeichnis enthält Original-3
, und in Original-3
Wir haben unsere Akte Sample.pdf
(Puh…).
Was wir jetzt tun möchten, ist das Verzeichnis zu kopieren Original
mit seinem gesamten Inhalt in ein neues Verzeichnis und dieses neue Verzeichnis aufrufen Originalkopie
.
Dies kann einfach mit der Kopierbaum ()
funktionieren wie folgt (vorausgesetzt, dass auf dem Desktop alles passiert):
shutil shutil.copytree importieren ('Original', 'Original-Copy')
Sie sollten jetzt ein neues Verzeichnis finden Originalkopie
mit allem Inhalt und Struktur von Original
.
Das Verschieben einer Datei ist wie das Erstellen einer Datei Ausschneiden Einfügen Vorgang für die Datei. In dem Dateien kopieren In diesem Abschnitt haben wir gesehen, wie Sie eine Kopie einer Datei erstellen und dabei die Originaldatei am ursprünglichen Speicherort behalten.
In diesem Abschnitt erfahren Sie, wie Sie die Datei an einen neuen Speicherort verschieben (ausschneiden) und sie gleichzeitig vom ursprünglichen Speicherort entfernen. Dieser Vorgang wird einfach mit der ausgeführt Bewegung()
Funktion wie folgt:
shutil shutil.move importieren ('Sample.pdf', 'Temp')
Beachte das Sample.pdf
wurde in das Verzeichnis verschoben Temp
, und existiert nicht mehr auf dem Desktop.
Was ist, wenn wir umgezogen sind? Sample.pdf
zu einem neuen Datei New-Sample.pdf
, wie folgt?
shutil shutil.move importieren ('Sample.pdf', 'New-Sample.pdf')
In diesem Fall haben Sie nur New-Sample.pdf
mit dem gleichen Inhalt wie Sample.pdf
, aber Sample.pdf
existiert nicht länger.
Das Verschieben von Verzeichnissen erfolgt mit der gleichen Funktion, die wir in verwendet haben Dateien verschieben Abschnitt, das ist Bewegung()
. Nehmen wir das gleiche Beispiel wie in der Verzeichnisse kopieren Abschnitt, aber jetzt mit der Bewegung()
Funktion.
shutil shutil.move importieren ('Original', 'Original-Copy')
In diesem Fall haben Sie ein neues Verzeichnis Originalkopie
mit dem gleichen Inhalt wie Original
, aber Original
existiert nicht länger.
Erraten Sie, was? Sie können auch die Bewegung()
Funktion zu umbenennen eine Datei oder ein Verzeichnis. Ich werde die Beispiele in diesem Abschnitt nicht noch einmal wiederholen. Aber wenn Sie das bei der Anwendung bemerkt haben Bewegung()
Um sowohl in den Dateien als auch in den Verzeichnissen zu funktionieren, haben wir erwähnt, dass die ursprüngliche Datei / das ursprüngliche Verzeichnis nicht mehr existiert, aber eine neue Datei / das gleiche Verzeichnis mit demselben Inhalt vorhanden ist. Dies ist wie das Umbenennen einer Datei / eines Verzeichnisses, nicht wahr?
Es scheint, dass die shutil
Das Modul enthält keine Funktion zum Löschen Dateien. Es enthält jedoch eine Funktion zum Löschen von Verzeichnissen: rmtree ()
. Seien Sie vorsichtig, da die Löschung dauerhaft ist und Sie dies tun werden nicht Finden Sie das gelöschte Verzeichnis in Ihrem Papierkorb.
Das folgende Beispiel zeigt, wie wir das dauerhaft löschen können Originalkopie
Verzeichnis:
shutil shutil.rmtree importieren ('Original-Copy')
Wenn Sie dauerhaft löschen möchten, a Datei, du kannst den ... benutzen Löschen()
Funktion von Python's os
Modul wie folgt:
os os.remove importieren ('Sample.pdf')
Wie Sie sehen, konnten wir wichtige Vorgänge für Dateien und Verzeichnisse (Kopieren, Verschieben, Umbenennen und Löschen) sehr einfach über die Module shutil und os ausführen. In der Dokumentation dieser Module finden Sie weitere Informationen dazu, was Sie damit tun können.