Come copiare un file in Python? Se ti stai chiedendo come fare sei nel posto giusto: lo scopriamo in questo articolo!
Se stai già usando i file da un po’ in Python, ti sarai accorto che ci sono tante funzionalità per poterli gestire: se così non fosse, ti invito a scoprire in questo mio articolo come si possono gestire i file in Python.
Ciao mi chiamo Lorenzo Neri e sono un informatico: realizzo contenuti per aiutare le persone a padroneggiare l’arte del nuovo millennio, ovvero l’informatica!
… Posso anche dirti brevemente una piccola grande cosa: il pacchetto “os” di Python non prevede metodi per copiare i file. Ecco, l’ho detto.
Per questo ho menzionato appunto l’articolo in questione, ma insomma: cerchiamo di capire come copiare questi file.
Il pacchetto “shutil” permette di copiare file
Se il pacchetto “os” non fa al caso nostro, ce n’è un altro che viene in nostro aiuto: si chiama “shutil”.
Questo pacchetto mette a disposizione diversi metodi che ti permettono di copiare un file in Python.
Partiamo dal metodo più essenziale e semplice di tutti per portare a termine ciò che ti stai chiedendo da inizio articolo: “copyfile”.
Copyfile: un nome, una garanzia per copiare 😀
Sì, direi che il nome non lascia assolutamente niente al caso. Come usarlo?
Beh, così:
from shutil import copyfile
copyfile(file_da_copiare, file_in_cui_copiare)
Semplice ed immediato anche nell’utilizzo! Ma ovviamente non voglio lasciare nulla al caso.
Intanto questo metodo prevede due parametri. Il file da copiare, il primo, il file che sarà la copia, il secondo.
La destinazione, quindi il secondo parametro, dev’essere scrivibile: altrimenti viene generata un’eccezione di tipo “IOError”.
Sempre parlando del secondo parametro, se già esiste un file con il nome indicato, viene sovrascritto: PERCIÒ FAI ATTENZIONE!
I parametri stessi, quindi entrambi, sono i path da passare come stringhe, quindi di tipo str.
Tuttavia, se non vuoi fare casino con i tipi e con i path per copiare un file, puoi usare un’altra funzione.
Di solito, tramite il pacchetto “os” possiamo utilizzare una funzionalità molto pratica che è “os.path”.
Si tratta però di un tipo ben specifico e non di una stringa pura!
In questo caso, ti suggerisco di usare la funzione “copy” e non “copyfile” se è tua intenzione usare “os.path” anziché delle stringhe nude e crude.
Funzioni ulteriori per copiare
Il pacchetto “shutil“ mette a disposizione ben quattro metodi diversi fra loro per copiare file in Python.
Rispettivamente sono: copy, copyfile, copy2 e copyfileobj che ti invito a scoprire per ognuno dei quattro link che ti ho lasciato come referenza 😉