Copia un file in Python
-
Shutil
copyfile()
Metodo per copiare file in Python -
Shutil metodo
copy()
per copiare file con permessi -
Confronto tra il metodo
copy()
ecopyfile()
-
Metodo
copyfileobj()
per copiare l’oggetto file -
Metodo
copy2()
per conservare i metadati - Conclusione dei metodi per copiare un file in Python
Python viene fornito con diversi moduli predefiniti per supportare le operazioni di I/O sui file (come OS
, subprocess
e shutil
). Copierete semplicemente file e directory usando il modulo shutil
. Le operazioni come la duplicazione, il trasferimento o l’eliminazione di file e directory vengono completate utilizzando questa funzione di utilità. Qui vengono discussi quattro metodi come segue.
Shutil copyfile()
Metodo per copiare file in Python
Copia il materiale di origine in un file con nome di destinazione. Se il target non è scrivibile, si verificherà un’eccezione IOError
nel processo di copia. Se i file di origine e di destinazione sono gli stessi, restituisce SameFileError
. I nomi di percorso dell’origine e della destinazione vengono forniti come stringhe.
copyfile(source_file, destination_file)
I dispositivi a caratteri o a blocchi e le pipe non sono supportati da questo metodo.
import shutil
source = r"C:\Users\DelftStack\Documents\test\test.txt"
destination = r"C:\Users\DelftStack\Pictures\test2\test2.txt"
shutil.copyfile(source, destination)
Shutil metodo copy()
per copiare file con permessi
Il metodo copy()
funziona come il comando Unix cp
. Dopo aver copiato il suo contenuto, questo metodo sincronizza le autorizzazioni del file di destinazione con il file di origine. Se stai copiando lo stesso file, viene lanciato anche SameFileError
. La sua sintassi è la seguente.
shutil.copy(src_file, dest_file, *, follow_symlinks=True)
Esempio di metodo Shutil copy()
per copiare file con autorizzazioni
import shutil
src = r"C:\Users\DelftStack\Documents\test\test.txt"
des = r"C:\Users\DelftStack\Pictures\test2\test2.txt"
shutil.copy(src, des)
Confronto tra il metodo copy()
e copyfile()
- Il metodo
copy()
spesso imposta i permessi del file quando i contenuti vengono copiati, mentrecopyfile()
copia solo i dati. - Essenzialmente, nella sua implementazione, il metodo
copyfile()
utilizza il metodocopyfileobj()
. In confronto, il metodocopy()
utilizza le funzionicopyfile()
ecopymode()
. - Il punto precedente rende chiaro che
copyfile()
sarà un po’ più veloce dicopy()
perché c’è un lavoro extra a portata di mano con quest’ultimo (conservazione dei permessi).
Metodo copyfileobj()
per copiare l’oggetto file
Questa funzione copia il file nell’oggetto del percorso o del file di destinazione. Se l’oggetto di destinazione è un oggetto file, è necessario chiuderlo dopo aver chiamato direttamente copyfileobj()
. La dimensione del buffer viene utilizzata per specificare la lunghezza del buffer. È il numero di byte conservati in memoria durante il processo di copia.
La sintassi del metodo copyfileobj()
è di seguito.
shutil.copyfileobj(src_file_object, dest_file_object[, length])
import shutil
filename1 = r"C:\Users\DelftStack\Documents\test\test.txt"
fileA = open(filename1, "rb")
filename2 = r"C:\Users\DelftStack\Pictures\test2\test2.txt"
fileB = open(filename2, "wb")
shutil.copyfileobj(fileA, fileB)
Metodo copy2()
per conservare i metadati
Il metodo copy2()
è simile al metodo copy()
, ma oltre a copiare il contenuto del file, conserva anche tutti i metadati del file sorgente.
shutil.copy2(src_file, dest_file, *, follow_symlinks=True)
import shutil
src = r"C:\Users\DelftStack\Documents\test\test.txt"
des = r"C:\Users\DelftStack\Pictures\test2\test2.txt"
shutil.copy2(src, des)
Conclusione dei metodi per copiare un file in Python
Alla fine, una tabella è allegata per tutti i metodi e aiuta a capire meglio l’utilità shutil
.
Funzione | copia i metadati | copia i permessi | può usare il buffer | la destinazione può essere directory |
---|---|---|---|---|
shutil.copy |
No | sì | No | sì |
shutil.copyfile |
No | No | No | No |
shutil.copy2 |
sì | sì | No | sì |
shutil.copyfileobj |
No | No | sì | No |