Python COPY File ved hjelp av shutil.copy (), shutil.copystat ()

Innholdsfortegnelse:

Anonim

Python Copy File Methods

Python har innebygde funksjoner for enkel kopiering av filer ved hjelp av operativsystemets shell-verktøy.

Følgende kommando brukes til å kopiere fil

shutil.copy(src,dst)

Følgende kommando brukes til å kopiere fil med metadatainformasjon

shutil.copystat(src,dst)

Her er trinnene for å kopiere filen i Python

Trinn 1) Før vi kopierer en fil, må vi få stien til den originale filen i den gjeldende katalogen. I koden -

  1. Erklæringsvariabel
  2. Bruker delt funksjon på variabel

Kode Forklaring

  • Først skal vi sjekke at filen "guru99.txt" eksisterer eller ikke. Siden vi har opprettet guru99.txt-filen tidligere, vet vi at den eksisterer, og vi vil fortsette videre med koden
  • Vi lagrer filbanen i variabelen " src " hvis filen din eksisterer
  • Når vi har fått banen, skal vi skille banen og filnavnet
  • For det skal vi bruke split- path.splitfunksjonen på kildevariabelen
  • Kode når den kjøres, skriver ut " filnavn " og " filsti " separat

Trinn 2) Vi bruker Shutil Module for å lage en kopi av den eksisterende filen. Her pleide vi å lage en kopi av vår eksisterende fil "guru99.txt."

Kode Forklaring

  • Ta det originale filnavnet "guru99.txt" og legg til bokstaver .bak på slutten "guru99.txt.bak". Dette navnet med .bak-utvidelsen kommer til å være vår duplikatkopi
  • Og så skal vi bruke verktøyets kopifunksjon til å kopiere fra kilde til destinasjonen
  • Når du kjører koden, vil du se en duplikatfil med .bak-utvidelsen er opprettet på høyre side av panelet

Trinn 3) Kopifunksjon kopierer bare innholdet i filen, men ingen annen informasjon. For å kopiere metadata tilknyttet filen, filtillatelse og annen informasjon, må du bruke " copystat " -funksjonen. Før vi kjører denne koden, må vi slette kopifilen "guru99.text.bak".

Når du har slettet filen og kjørt programmet, vil den opprette en kopi av .txt-filen, men denne gangen med all informasjon som filtillatelse, endringstid og metadatainformasjon . Du kan gå til OS-skallet ditt for å bekrefte informasjonen.

Her er koden

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

Trinn 4) Du kan hente informasjonen om tekstfilen sist endret

  • Kodelinje nr. 15- Den forteller dag, dato, måned, år og tid da .txt-filen (guru99) sist ble endret. Vi bruker banemodulen for å få informasjon om filendringstidene, og så skal vi bruke tidsklassene c tidsfunksjon for å konvertere den til en lesbar tid. Så når vi kjører koden, kan vi se filen guru99.txt ble sist endret Man den 8 januar th på 13:35 2018.
  • Kodelinje 17- Det gjør det samme som gir informasjon om filendring, men det har et annet format for å representere det. Her bruker vi Get Modification Time-funksjonen (path.getmtime ("guru99.txt")). Nå i stedet for å bruke c-tidsfunksjonen, skal vi bruke fra tidsstempelfunksjonen og konstruere et dato-tidsobjekt. I utdata kan du se filendringstidsdetaljer skrives ut i forskjellige format 2018-01-08, 13: 35: 51.334072

Her er koden

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

Sammendrag

  • For å lage en kopi av den eksisterende filen ved hjelp av koden shutil.copy (src, dst)
  • For å kopiere all informasjonen i den originale filen for å duplisere filen, som filtillatelse, endringstid eller metadatainformasjon, bruker du koden shutil.copystat (src, dst)