Python lernen? So kopieren Sie eine Datei
Möchten Sie Ihre Python-Fähigkeiten verbessern? Anschließend können Sie versuchen, einige Aufgaben mit Python auf Ihrem Computer auszuführen. Das Kopieren und Einfügen von Dateien von einem Verzeichnis in ein anderes mit Python ist eine unterhaltsame Möglichkeit, dies zu tun.
Sie machen nicht nur Spaß, sondern können auch schnell Dateien lesen und schreiben, ohne von Ihrem Code abgelenkt zu werden. Wenn Sie Python noch nicht kennen, ist es eine Fähigkeit, die Sie möglicherweise noch auf die eine oder andere Weise erlernen müssen. Lassen Sie uns in diesem Beitrag herausfinden, wie Sie Dateien mit Python kopieren können.
Voraussetzungen zum Kopieren von Dateien mit Python
Es gibt viele Möglichkeiten, Dateien mit Python zu kopieren und einzufügen. Die Anforderungen hierfür variieren und hängen von der Methode ab, für die Sie sich entscheiden.
Während Sie möglicherweise keine zusätzlichen Module benötigen, um Dateien mit Python zu kopieren, können Sie bei Bedarf integrierte Bibliotheken verwenden.
Wenn Sie beispielsweise die OS- Methode verwenden möchten, müssen Sie sie in Ihren Code importieren. Eine der beliebtesten Methoden zum Kopieren von Dateien mit Python ist jedoch die Verwendung der Shutil- Bibliothek.
Mal sehen, wie wir diese verschiedenen Methoden verwenden können, um Dateien mit Python zu kopieren.
Kopieren von Dateien mit der integrierten Shutil-Bibliothek von Python
Das Shutil- Modul ist eine integrierte und leistungsstarke Python-Bibliothek zum schnellen Lesen und Schreiben von Dateien in Python.
Um es zu verwenden, müssen Sie nur den vollständigen Pfad der Quell- und Zieldateien angeben.
Im Wesentlichen hat shutil das folgende Format:
shutil.copy([source directory path], [destination directory path], follow_symlinks=True)
Zum Beispiel shutil.copy der folgende Code verwendet () eine Datei mit dem Namen copy.txt aus einem Ordner namens my_folder in ein anderen benannte Ziel zu kopieren. Anschließend wird die Zieldatei in newFile.txt umbenannt :
import shutil
sourceFile = "C:/Users/some_directories/my_folder/copy.txt"
destinationFile = "C:/Users/some_directories/destination/newFile.txt"
shutil.copy(sourceFile, destinationFile, follow_symlinks=True)
Beachten Sie, dass Sie Ihren Code in einem beliebigen Code-Editor Ihrer Wahl schreiben können. Sie können es dann über die Befehlszeile ausführen.
Sie können jedoch auch die standardmäßige integrierte Python-Entwicklungsumgebung (IDLE) verwenden, wenn Sie nicht mit der Ausführung von Python über die Befehlszeile vertraut sind.
Die Methode shutil.copy kopiert nicht die Metadaten der Quelldatei. Im Wesentlichen sieht Ihr Computer die Zieldatei vollständig als neue Datei und gibt ihr neue Metadaten.
Verwenden Sie jedoch die Methode shutil.copy2 , um die Metadaten zusammen mit der Originaldatei zu kopieren:
import shutil
shutil.copy2(sourceFile, destinationFile, follow_symlinks=True)
Bei der obigen Methode werden die ursprünglichen Metadaten der alten Datei in der Zieldatei beibehalten. Beispielsweise behält die Zieldatei das Datum, an dem Sie die Quelldatei erstellt haben, ihre Größe und andere Attribute bei.
Das Argument follow_symlinks ist eine symbolische Linkdeklaration , mit der shutil einem absoluten Pfad folgen kann. Daher müssen Sie es einschließen, wenn sich die Quell- und Zieldateien in verschiedenen Verzeichnissen befinden.
Wenn sich beide Dateien jedoch in Ihrem aktuellen Arbeitsverzeichnis befinden, müssen Sie keine follow_symlinks einfügen . In diesem Fall löst Python eine Syntaxausnahme aus.
Wenn Sie also die Quelldatei in Ihr aktuelles Arbeitsverzeichnis einfügen, sollte Ihr Code folgendermaßen aussehen:
import shutil
shutil.copy2(sourceFile, destinationFile)
Zusätzlich zu den oben genannten Shutil-Methoden können Sie auch shutil.copyfile oder shutil.copyfileobj verwenden .
Shutil.copyfileobj zu verwenden ist ein bisschen anders als es die eingebaute in open – Funktion erfordert. Dann müssen Sie Binärdateien lesen und schreiben, indem Sie die Argumente "rb" und "wb" einschließen.
Mal sehen, wie die Methode shutil.copyfileobj mit denselben Verzeichnissen funktioniert, die wir zuvor verwendet haben:
import shutil
sourceFilePath = open("C:/Users/some_directories/my_folder/copy.txt", "rb")
destinationFilePath = open("C:/Users/some_directories/destination/newFile.txt", "wb")
shutil.copyfileobj(sourceFilePath, destinationFilePath)
Beachten Sie, dass für shutil.copyfileobj () das Argument follow_symlinks nicht erforderlich ist.
Shutil.copyfile () funktioniert jedoch genauso wie .copy und .copy2 . Sie unterscheiden sich nur unwesentlich in ihren internen Funktionen.
So verwenden Sie die Methode shutil.copyfile () :
import shutil
sourceFilePath = "C:/Users/some_directories/my_folder/copy.txt"
destinationFilePath = "C:/Users/some_directories/destination/newFile.txt"
shutil.copyfile(sourceFilePath, destinationFilePath)
So kopieren Sie Dateien mit dem OS-Modul
Das OS- Modul verwendet zwei integrierte Methoden zum Kopieren von Dateien. Methoden os.system () und os.popen () .
Mit der Methode os.system () können Sie die Befehlszeilenumgebung imitieren.
Ein Nachteil der OS-Methoden besteht jedoch darin, dass sie nur Dateien in Ihr aktuelles Arbeitsverzeichnis kopieren.
So verwenden Sie die Methode os.system () unter Windows:
import os
os.system('copy source.txt destination.txt)
Sie können auch den integrierten xcopy Windows-Terminalbefehl verwenden:
import os
os.system('xcopy source.txt destination.txt)
Um die os.system- Methode unter Linux zu verwenden, ersetzen Sie copy durch cp :
import os
os.system('cp source.txt destination.txt)
So kopieren Sie Dateien mit der os.popen-Methode
Um diese Methode zu verwenden, ersetzen Sie os.system () durch os.popen () .
Verwenden Sie unter Windows:
import os
os.popen('copy source.txt destination.txt)
Ersetzen Sie wie bei os.system () die Kopie durch cp , um diese Methode unter Linux zu verwenden:
import os
os.popen('cp source.txt destination.txt)
Kopieren von Dateien mit dem Python-Unterprozessmodul
Zusätzlich zu den oben genannten Methoden können Sie auch die Bibliothek subprocess () verwenden, um Dateien in Python zu kopieren:
import subprocess as sp
sp.call("copy sourceFile destinationFile", shell=True)
Verwenden Sie unter Linux jedoch Folgendes:
import subprocess as sp
sp.call("cp sourceFile destinationFile", shell=True)
Die Unterprozessbibliothek verwendet auch die Methode subprocess.check_out () . Es funktioniert genauso wie subprocess.call () :
import subprocess as sp
sp.check_out("copy sourceFile destinationFile", shell=True)
Ersetzen Sie unter Linux die Kopie durch cp :
import subprocess as sp
sp.check_out("cp sourceFile destinationFIle", shell=True)
Wie die OS-Methoden funktionieren Unterprozessmethoden jedoch nur mit Dateien in Ihrem aktuellen Arbeitsverzeichnis.
Hinweis: Sie können Dateien auch in einen Ordner kopieren, wenn er sich im selben Arbeitsverzeichnis wie die Quelldatei befindet. Sie müssen lediglich den Zieldateinamen durch den Namen des Zielordners ersetzen. Stellen Sie jedoch sicher, dass sich der Zielordner und die Quelldatei in Ihrem aktuellen Arbeitsverzeichnis befinden.
So kopieren Sie Dateien in Python ohne Verwendung von Bibliotheken
Sie können Dateien auch in Python kopieren, ohne von einer Bibliothek abhängig zu sein. Wie bei der Shutil-Methode benötigen Sie nur die vollständigen Pfade der Quell- und Zielverzeichnisse.
So erreichen Sie das:
sourcePath = "C:/Users/source_directories/my_folder/copy.txt"
destinationPath = "C:/Users/some_directories/destination_directories/newFile.txt"
with open(sourcePath, "rb") as read:
with open(destinationPath, "wb") as myfile:
myfile.write(read.read())
Um den Code wiederverwendbar zu machen , können Sie ihn in eine Funktion ändern:
def copyFile(source=None, destination=None):
if not (source and destination)==None:
with open(source, "rb") as read:
with open(destination, "wb") as myfile:
myfile.write(read.read())
else:
print("Please enter the source and destination paths")
copyFile(sourcePath, destinationPath)
Das ist es. Sie haben gerade einen wiederverwendbaren Dateikopierer mit Python erstellt, ohne eine Bibliothek zu verwenden.
Automatisieren Sie weiterhin Aufgaben mit Python
Durch das Kopieren von Dateien mit Python können Sie sich nicht nur beim Erstellen von Projekten auf Ihren Code konzentrieren, sondern auch die Dateiverwaltung mit Python besser verstehen. Das Herumspielen mit Python-Aufgaben ist jedoch eine Möglichkeit, Ihre Python-Fähigkeiten zu verbessern, insbesondere wenn Sie Anfänger sind.
Mit dem OS-Modul können Sie beispielsweise Datum und Uhrzeit auf Ihrem PC ändern. Sie können sogar benutzerdefinierte Bash-Befehle mit Python schreiben, wenn Sie möchten.