Wie kann ich eine Datei in Python kopieren?
Beachten Sie, dass je nach Plattform nicht alle Metadaten kopiert werden.
shutil
hat viele Methoden, die Sie verwenden können. Eine davon ist:
import shutil
shutil.copyfile(src, dst)
# 2nd option
shutil.copy(src, dst) # dst can be a folder; use shutil.copy2() to preserve timestamp
src
in eine Datei namens dst
. Beide src
y dst
muss der gesamte Dateiname der Dateien, einschließlich des Pfads, angegeben werden.IOError
wird eine Ausnahme ausgelöst.dst
bereits existiert, wird sie ersetzt.copy
, src
y dst
sind Pfadnamen, die als str
s.Eine weitere shutil
zu betrachtende Methode ist shutil.copy2()
. Es ist ähnlich, behält aber mehr Metadaten bei (z. B. Zeitstempel).
Wenn Sie os.path
Operationen, verwenden copy
statt copyfile
. copyfile
akzeptiert nur Zeichenketten.
Beachten Sie, dass es sich nicht um eine atomare Operation handelt. Seien Sie vorsichtig, wenn Sie sie in einer Anwendung mit Threads verwenden.
Beachten Sie, dass es nicht mit Abkürzungen wie ~
aber es kann mit relativen Pfaden umgehen
Beachten Sie, dass selbst die shutil.copy2()
Funktion kann nicht alle Datei-Metadaten kopieren .
copy2(src,dst)
ist oft nützlicher als copyfile(src,dst)
denn:
dst
zu sein Verzeichnis (anstelle des vollständigen Zieldateinamens), in diesem Fall wird die basename de src
wird für die Erstellung der neuen Datei verwendet;Hier ist ein kurzes Beispiel:
import shutil
shutil.copy2('/src/dir/file.ext', '/dst/dir/newname.ext') # complete target filename given
shutil.copy2('/src/file.ext', '/dst/dir') # target filename is /dst/dir/file.ext
In Python können Sie die Dateien mit
shutil
Modulos
Modulsubprocess
Modulimport os
import shutil
import subprocess
shutil
Modulshutil.copyfile
Unterschrift
shutil.copyfile(src_file, dest_file, *, follow_symlinks=True)
# example
shutil.copyfile('source.txt', 'destination.txt')
shutil.copy
Unterschrift
shutil.copy(src_file, dest_file, *, follow_symlinks=True)
# example
shutil.copy('source.txt', 'destination.txt')
shutil.copy2
Unterschrift
shutil.copy2(src_file, dest_file, *, follow_symlinks=True)
# example
shutil.copy2('source.txt', 'destination.txt')
shutil.copyfileobj
Unterschrift
shutil.copyfileobj(src_file_object, dest_file_object[, length])
# example
file_src = 'source.txt'
f_src = open(file_src, 'rb')
file_dest = 'destination.txt'
f_dest = open(file_dest, 'wb')
shutil.copyfileobj(f_src, f_dest)
os
Modulos.popen
Unterschrift
os.popen(cmd[, mode[, bufsize]])
# example
# In Unix/Linux
os.popen('cp source.txt destination.txt')
# In Windows
os.popen('copy source.txt destination.txt')
os.system
Unterschrift
os.system(command)
# In Linux/Unix
os.system('cp source.txt destination.txt')
# In Windows
os.system('copy source.txt destination.txt')
subprocess
Modulsubprocess.call
Unterschrift
subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)
# example (WARNING: setting `shell=True` might be a security-risk)
# In Linux/Unix
status = subprocess.call('cp source.txt destination.txt', shell=True)
# In Windows
status = subprocess.call('copy source.txt destination.txt', shell=True)
subprocess.check_output
Unterschrift
subprocess.check_output(args, *, stdin=None, stderr=None, shell=False, universal_newlines=False)
# example (WARNING: setting `shell=True` might be a security-risk)
# In Linux/Unix
status = subprocess.check_output('cp source.txt destination.txt', shell=True)
# In Windows
status = subprocess.check_output('copy source.txt destination.txt', shell=True)
Die Verwendung von Single-String-Befehlen ist ein schlechter Programmierstil (Flexibilität, Zuverlässigkeit und Sicherheit), verwenden Sie stattdessen ['copy', sourcefile, destfile]
Syntax, wo immer dies möglich ist, insbesondere wenn die Parameter aus Benutzereingaben stammen.
Shutil ist eingebaut, es besteht keine Notwendigkeit, nicht-portable Alternativen anzubieten. Die Antwort könnte tatsächlich verbessert werden, indem die systemabhängigen Lösungen entfernt werden, und nach dieser Entfernung ist diese Antwort nur eine Kopie der bestehenden Antworten / eine Kopie der Dokumentation.
Sie können eine der Kopierfunktionen aus der shutil
Paket:
Function preserves supports accepts copies other
permissions directory dest. file obj metadata
[shutil.copy](https://docs.python.org/3/library/shutil.html#shutil.copy)
[shutil.copy2](https://docs.python.org/3/library/shutil.html#shutil.copy2)
[shutil.copyfile](https://docs.python.org/3/library/shutil.html#shutil.copyfile)
[shutil.copyfileobj](https://docs.python.org/3/library/shutil.html#shutil.copyfileobj)
Beispiel:
import shutil
shutil.copy('/etc/hostname', '/var/tmp/testhostname')
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.