Copia file in Python: metodo shutil.copy(), shutil.copystat()

⚡ Riepilogo intelligente

Python Il modulo shutil copia i file. `shutil.copy()` duplica il contenuto di un file, mentre `shutil.copystat()` copia anche i permessi, l'ora di modifica e i metadati. Qui imparerai entrambi i metodi con un esempio passo passo.

  • 📋 shutil.copy(): shutil.copy(src, dst) copia il contenuto di un file in una nuova destinazione.
  • 🗂️ shutil.copystat(): shutil.copystat(src, dst) copia anche permessi, ora e metadati.
  • 🤖 Aiuto tramite intelligenza artificiale: Strumenti di intelligenza artificiale come Copilot generano istantaneamente il codice di copia dello schermo.

Copia file in Python

Python Metodi di copia file

Python fornisce funzioni integrate per copiare facilmente i file utilizzando il formato Operautilità di System Shell.

Il seguente comando viene utilizzato per copiare il file

shutil.copy(src,dst)

Il seguente comando viene utilizzato per copiare file con informazioni sui metadati

shutil.copystat(src,dst)

Come copiare un file in Python

Ecco i passaggi per copiare il file Python utilizzando il metodo shutil copy():

Passo 1) Cattura il percorso originale nella directory corrente
Prima di copiare un file, dobbiamo ottenere il percorso del file originale nella directory corrente. Nel codice –

  1. Dichiarare variabile
  2. Applicazione della funzione di divisione sulla variabile

Copia un file in Python

Code Spiegazione

  • Per prima cosa controlleremo che il nostro file “guru99.txt” esista o meno. Poiché in precedenza abbiamo creato il file guru99.txt, sappiamo che esiste e procederemo ulteriormente con il codice
  • Memorizziamo il percorso del file nella variabile “src"se il tuo file esiste
  • Una volta ottenuto il percorso, separeremo il percorso e il nome del file
  • Per questo utilizzeremo la divisione path.split funzione sulla variabile sorgente
  • Code quando eseguito stampa “nome del file" e "percorso del file" separatamente

Passo 2) Crea una copia del nostro file esistente utilizzando il modulo shutil
Usiamo Shutil Module per creare una copia del file esistente. Qui creavamo una copia del nostro file esistente “guru99.txt”.

Copia un file in Python

Code Spiegazione

  • Prendi il nome del file originale “guru99.txt” e aggiungi le lettere .bak alla fine “guru99.txt.bak”. Questo nome con estensione .bak sarà la nostra copia duplicata
  • E poi utilizzeremo la funzione di copia dell'utilità per copiare dall'origine alla destinazione
  • Quando esegui il codice, vedrai un file duplicato con estensione .bak creato sul lato destro del pannello

Passo 3) Copia i metadati associati al file, l'autorizzazione del file e altre informazioni
La funzione Copia copia solo il contenuto del file ma nessun'altra informazione. Copiare meta-dati associato al file, all'autorizzazione del file e ad altre informazioni che devi utilizzare "copystat" funzione. Prima di eseguire questo codice, dobbiamo eliminare la nostra copia del file "guru99.text.bak".

Copia un file in Python

Una volta eliminato il file ed eseguito il programma, verrà creata una copia del tuo file .txt ma questa volta con tutte le informazioni come autorizzazione del file, ora di modifica e informazioni sui metadati. Puoi andare alla shell del tuo sistema operativo per verificare le informazioni.

Copia un file in Python

Ecco il codice

import os
import shutil
from os import path

def main():
    # make a duplicate of an existing file
	if path.exists("guru99.txt"):
    # get the path to the file in the current directory
        src = path.realpath("guru99.txt");
    
	#seperate the path from the filter
	head, tail = path.split(src)
	print("path:" +head)
	print("file:" +tail)
	
	#let's make a backup copy by appending "bak" to the name
	dst = src+".bak"
	# nowuse the shell to make a copy of the file
	shutil.copy(src, dst)
	
	#copy over the permissions,modification
	shutil.copystat(src,dst)
	
if __name__=="__main__":
	main()

Passo 4) Recupera le informazioni
È possibile recuperare le informazioni sull'ultimo file di testo modificato

Copia un file in Python

  • Code Riga n. 15 - Indica il giorno, la data, il mese, l'anno e l'ora in cui il file .txt (guru99) è stato modificato per l'ultima volta. Utilizziamo il modulo path per ottenere i dettagli dell'ora di modifica del file e poi useremo il classi temporali c funzione temporale per convertirlo in un tempo leggibile. Quindi, quando eseguiamo il codice, possiamo vedere il file guru99.txt in cui è stato modificato l'ultima volta lun, 8 gennaioth alle 13:35 2018.
  • Code Riga n. 17 - Fa la stessa cosa fornendo informazioni sulla modifica del file, ma ha un formato diverso per rappresentarlo. Qui usiamo Ottieni la funzione Ora di modifica (percorso.getmtime("guru99.txt")). Ora invece di usare la funzione c time useremo Dalla funzione Time Stamp e costruiremo un oggetto data/ora. Nell'output, è possibile vedere i dettagli dell'ora di modifica del file stampati in un formato diverso 2018-01-08, 13:35:51.334072

Ecco il codice

#
# Example file for working with o.s path module

import os
from os import path
import datetime
from datetime import date, time, timedelta
import time

def main():

    # Get the modification time
    t = time.ctime(path.getmtime("guru99.txt.bak"))
    print(t)
    print(datetime.datetime.fromtimestamp(path.getmtime("guru99.txt.bak")))

if __name__ == "__main__":
    main()

DOMANDE FREQUENTI

Importa la libreria shutil, quindi chiama shutil.copy(src, dst) per copiare il contenuto del file. Usa shutil.copystat() per copiare anche i metadati.

shutil.copystat(src, dst) copia i permessi, l'ora di modifica e i metadati di un file nella destinazione, ma non il suo contenuto.

`shutil.copy()` copia il contenuto e i permessi, mentre `shutil.copy2()` conserva anche i metadati come i timestamp. Usa `copy2()` per mantenere l'ora di modifica.

La funzione shutil.copy() accetta una directory di destinazione e copia i permessi; la funzione shutil.copyfile() richiede il percorso completo del file e copia solo il contenuto.

Utilizza `shutil.copytree(src, dst)` per copiare ricorsivamente un'intera directory e il suo contenuto. La cartella di destinazione non deve già esistere.

Gli assistenti basati sull'intelligenza artificiale come GitHub Copilot completano automaticamente le chiamate a shutil.copy() e copystat() e suggeriscono copy2() o copytree() per il tuo caso.

Sì. Gli strumenti basati sull'intelligenza artificiale generano routine di backup, scelgono il metodo di salvataggio più adatto e aggiungono controlli di esistenza prima di copiare file o cartelle.

Utilizza os.path.getmtime(path) per ottenere il timestamp, quindi convertilo con time.ctime() o datetime.fromtimestamp() per ottenere una data leggibile.

Riassumi questo post con: