File COPIA Python usando shutil.copy (), shutil.copystat ()

Sommario:

Anonim

Metodi di copia dei file Python

Python fornisce funzioni integrate per copiare facilmente i file utilizzando le utilità della shell del sistema operativo.

Il comando seguente viene utilizzato per copiare il file

shutil.copy(src,dst)

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

shutil.copystat(src,dst)

Ecco i passaggi per copiare il file in Python

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

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

Spiegazione del codice

  • 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 andremo avanti 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, useremo la path.splitfunzione split sulla variabile sorgente
  • Il codice quando viene eseguito stampa separatamente " nome file " e " percorso file "

Passaggio 2) Usiamo Shutil Module per creare una copia del file esistente. Qui abbiamo usato per creare una copia del nostro file esistente "guru99.txt".

Spiegazione del codice

  • 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
  • Quindi useremo 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

Passaggio 3) La funzione Copia copia solo il contenuto del file ma non altre informazioni. Per copiare i metadati associati al file, i permessi del file e altre informazioni è necessario utilizzare la funzione " copystat ". Prima di eseguire questo codice, dobbiamo eliminare il nostro file di copia "guru99.text.bak".

Dopo aver eliminato il file ed eseguito il programma, verrà creata una copia del 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.

Ecco il codice

import osimport shutilfrom os import pathdef main():# make a duplicate of an existing fileif path.exists("guru99.txt"):# get the path to the file in the current directorysrc = path.realpath("guru99.txt");#seperate the path from the filterhead, tail = path.split(src)print("path: +head)print("file: +tail)#let's make a backup copy by appending "bak" to the namedst = src+".bak"# nowuse the shell to make a copy of the fileshutil.copy(src, dst)#copy over the permissions,modificationshutil.copystat(src,dst)if __name__=="__main__":main()

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

  • Riga di codice # 15- Indica il giorno, la data, il mese, l'anno e l'ora in cui il file .txt (guru99) è stato modificato l'ultima volta. Usiamo il modulo path per ottenere i dettagli dell'ora di modifica del file, quindi useremo la funzione time classes c time per convertirla in un'ora leggibile. Così, quando si corre il codice, possiamo vedere il file guru99.txt Ultima modifica Lun 8 Gen ° alle 13:35 2018.
  • Riga di codice # 17- Fa la stessa cosa fornendo informazioni sulla modifica del file, ma ha un formato diverso per rappresentarlo. Qui usiamo la funzione Get Modification Time (path.getmtime ("guru99.txt")). Ora invece di usare la funzione c time, useremo la funzione From Time Stamp e costruiremo un oggetto data e ora. Nell'output, puoi 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 moduleimport osfrom os import pathimport datetimefrom datetime import date, time, timedeltaimport timedef main():# Get the modification timet = time.ctime(path.getmtime("guru99.txt.bak"))print(t)print(datetime.datetime.fromtimestamp(path.getmtime("guru99.txt.bak")))if __name__ == "__main__":main()

Sommario

  • Per creare una copia del file esistente utilizzando il codice shutil.copy (src, dst)
  • Per copiare tutte le informazioni del file originale per duplicare file come autorizzazioni file, ora di modifica o informazioni sui metadati utilizzando il codice shutil.copystat (src, dst)