Python COPY File folosind shutil.copy (), shutil.copystat ()

Cuprins:

Anonim

Metode Python Copy File

Python oferă funcții încorporate pentru copierea cu ușurință a fișierelor utilizând utilitarele Shell ale sistemului de operare.

Comanda următoare este utilizată pentru a copia fișierul

shutil.copy(src,dst)

Următoarea comandă este utilizată pentru a copia fișierul cu informații MetaData

shutil.copystat(src,dst)

Iată pașii pentru copierea fișierului în Python

Pasul 1) Înainte, copiem un fișier, trebuie să obținem calea către fișierul original din directorul curent. În cod -

  1. Declararea variabilei
  2. Aplicarea funcției split pe variabilă

Explicarea codului

  • Mai întâi vom verifica dacă fișierul nostru "guru99.txt" există sau nu. Deoarece am creat fișierul guru99.txt mai devreme, știm că există și vom continua cu codul
  • Stocăm calea fișierului în variabila „ src ” dacă fișierul dvs. există
  • Odată ce obținem calea, vom separa calea și numele fișierului
  • Pentru aceasta, vom folosi path.splitfuncția de divizare a variabilei sursă
  • Codul la executare tipărește „ numele fișierului ” și „ calea fișierului ” separat

Pasul 2) Folosim modulul Shutil pentru a crea o copie a fișierului existent. Aici obișnuiam să creăm o copie a fișierului nostru existent „guru99.txt”.

Explicarea codului

  • Luați numele fișierului original „guru99.txt” și adăugați litere .bak la sfârșitul „guru99.txt.bak”. Acest nume cu extensia .bak va fi copia noastră duplicat
  • Și apoi vom folosi funcția de copiere a utilității pentru a copia de la sursă la destinație
  • Când rulați codul, veți vedea un fișier duplicat cu extensia .bak este creat în partea dreaptă a panoului

Pasul 3) Funcția de copiere copiază numai conținutul fișierului, dar nu alte informații. Pentru a copia metadatele asociate fișierului, permisiunea fișierului și alte informații, trebuie să utilizați funcția „ copystat ”. Înainte de a rula acest cod, trebuie să ștergem fișierul de copiere „guru99.text.bak”.

După ce ați șters fișierul și ați rulat programul, acesta va crea o copie a fișierului dvs. .txt, dar de data aceasta cu toate informațiile, cum ar fi permisiunea fișierului, timpul de modificare și informațiile despre meta-date . Puteți accesa shell-ul sistemului dvs. de operare pentru a verifica informațiile.

Iată codul

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()

Pasul 4) Puteți prelua informațiile despre fișierul text modificat ultima dată

  • Linia de cod # 15 - Indică ziua, data, luna, anul și ora când fișierul .txt (guru99) a fost modificat ultima dată. Folosim modulul cale pentru a obține detaliile timpului de modificare a fișierului și apoi vom folosi clasa de timp funcția c timp pentru a converti acest lucru într-un timp lizibil. Așa că , atunci când vom rula codul, putem vedea guru99.txt fișierul a fost modificat ultima dată pe lun, opt-1 - lea la 2018 13:35.
  • Linia de cod # 17 - Face același lucru oferind informații despre modificarea fișierului, dar are un format diferit pentru a-l reprezenta. Aici folosim funcția Get Modification Time (path.getmtime ("guru99.txt")). Acum, în loc să folosim funcția c time, vom folosi funcția From Time Stamp și vom construi un obiect data-oră. La ieșire, puteți vedea detaliile timpului modificării fișierului sunt tipărite în diferite formate 2018-01-08, 13: 35: 51.334072

Iată codul

## 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()

rezumat

  • Pentru a crea o copie a fișierului existent utilizând codul shutil.copy (src, dst)
  • Pentru a copia toate informațiile fișierului original într-un fișier duplicat, cum ar fi permisiunea fișierului, timpul de modificare sau informațiile meta-date, utilizând codul shutil.copystat (src, dst)