Frage Wie kopiere ich eine Datei in Python?


Wie kopiere ich eine Datei in Python? Ich konnte nichts darunter finden os.


1457
2017-09-23 19:23


Ursprung


Antworten:


shutil hat viele Methoden, die Sie verwenden können. Einer davon ist:

from shutil import copyfile

copyfile(src, dst)

Kopieren Sie den Inhalt der genannten Datei src in eine Datei mit dem Namen dst. Der Zielspeicherort muss beschreibbar sein. andernfalls IOError Ausnahme wird ausgelöst. Ob dst existiert bereits, wird es ersetzt werden. Spezielle Dateien wie Zeichen- oder Blockgeräte und Pipes können mit dieser Funktion nicht kopiert werden. src und dst Sind Pfadnamen als Strings angegeben?


1770
2017-09-23 19:25



-----------------------------------------------------------------------------------
| Function          |Copies Metadata|Copies Permissions|Can Use Buffer|Dest Dir OK
-----------------------------------------------------------------------------------
| shutil.copy       |      No       |        Yes       |      No      |    Yes
-----------------------------------------------------------------------------------
| shutil.copyfile   |      No       |        No        |      No      |    No
-----------------------------------------------------------------------------------
| shutil.copy2      |      Yes      |        Yes       |      No      |    Yes
-----------------------------------------------------------------------------------
| shutil.copyfileobj|      No       |        No        |      Yes     |    No
-----------------------------------------------------------------------------------

549
2018-05-20 20:01



copy2(src,dst) ist oft nützlicher als copyfile(src,dst) weil:

  • es erlaubt dst ein ... zu sein Verzeichnis (anstelle des vollständigen Zieldateinamens), wobei in diesem Fall der Basisname von src wird zum Erstellen der neuen Datei verwendet;
  • Es behält die ursprünglichen Modifikations- und Zugriffsinformationen (mtime und atime) in den Dateimetadaten bei (dies bringt jedoch einen leichten Overhead mit sich).

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

547
2017-09-23 19:29



Das Kopieren einer Datei ist eine relativ einfache Operation, wie in den folgenden Beispielen gezeigt, aber Sie sollten stattdessen die shutil stdlib Modul dafür.

def copyfileobj_example(source, dest, buffer_size=1024*1024):
    """      
    Copy a file from source to dest. source and dest
    must be file-like objects, i.e. any object with a read or
    write method, like for example StringIO.
    """
    while True:
        copy_buffer = source.read(buffer_size)
        if not copy_buffer:
            break
        dest.write(copy_buffer)

Wenn Sie nach Dateiname kopieren möchten, können Sie Folgendes tun:

def copyfile_example(source, dest):
    # Beware, this example does not handle any edge cases!
    with open(source, 'rb') as src, open(dest, 'wb') as dst:
        copyfileobj_example(src, dst)

73
2017-09-24 07:21



Benutze die Shut-Modul.

copyfile(src, dst)

Kopieren Sie den Inhalt der Datei mit dem Namen src in eine Datei namens dst. Der Zielspeicherort muss beschreibbar sein. Andernfalls wird eine IOError-Ausnahme ausgelöst. Wenn dst bereits existiert, wird es ersetzt. Spezielle Dateien wie Zeichen- oder Blockgeräte und Pipes können mit dieser Funktion nicht kopiert werden. src und dst sind Pfadnamen, die als Strings angegeben werden.

Sieh dir das an Dateien für alle Datei- und Verzeichnishandhabungsfunktionen, die in Python-Standardmodulen verfügbar sind.


47
2017-09-23 19:27



Sie können eine der Kopierfunktionen aus dem verwenden shutil Paket:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Funktion bewahrt Unterstützungen akzeptiert Kopien anderer
                      Berechtigungsverzeichnis dest. Datei-Obj-Metadaten
-------------------------------------------------- ----------------------------
shutil.copy                                            ☐ ☐
shutil.copy2                                           ☐
shutil.copyfile          ☐ ☐ ☐ ☐
shutil.copyfileobj       ☐ ☐ ☐
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Beispiel:

import shutil
shutil.copy('/etc/hostname', '/var/tmp/testhostname')

40
2017-07-09 11:50



Beispiel für eine Verzeichnis- und Dateikopie - Aus Tim Golden's Python-Material:

http://timgolden.me.uk/python/win32_how_do_i/copy-a-file.html

import os
import shutil
import tempfile

filename1 = tempfile.mktemp (".txt")
open (filename1, "w").close ()
filename2 = filename1 + ".copy"
print filename1, "=>", filename2

shutil.copy (filename1, filename2)

if os.path.isfile (filename2): print "Success"

dirname1 = tempfile.mktemp (".dir")
os.mkdir (dirname1)
dirname2 = dirname1 + ".copy"
print dirname1, "=>", dirname2

shutil.copytree (dirname1, dirname2)

if os.path.isdir (dirname2): print "Success"

36
2018-03-15 10:11



Schau dir das Modul an Shut. Es enthält Funktion Datei kopieren(src, dst)


21
2017-09-23 19:27