Kopier filen inn Python: shutil.copy(), shutil.copystat() metode

Python Kopier filmetoder

Python gir innebygde funksjoner for enkel kopiering av filer ved hjelp av Operating System 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)

Hvordan kopiere en fil inn Python

Her er trinnene for å kopiere filen inn Python ved å bruke shutil copy()-metoden:

Trinn 1) Fang den opprinnelige banen i gjeldende katalog
Før vi kopierer en fil, må vi få banen til den opprinnelige filen i gjeldende katalog. I koden –

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

Kopier en fil inn Python

Kode Forklaring

  • Først skal vi sjekke at "guru99.txt"-filen vår eksisterer eller ikke. Siden vi har laget guru99.txt-filen tidligere, vet vi at den eksisterer, og vi vil fortsette 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
  • Til det skal vi bruke splittelsen path.split funksjon på kildevariabel
  • Kode når den utføres skrives ut "filnavn"Og"filbane" separat

Trinn 2) Lag en kopi av vår eksisterende fil ved hjelp av shutil-modulen
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."

Kopier en fil inn Python

Kode Forklaring

  • Ta det originale filnavnet "guru99.txt" og legg til bokstavene .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 kopieringsfunksjon for å kopiere fra kilden til destinasjonen
  • Når du kjører koden, vil du se en duplikatfil med filtypen .bak opprettes på høyre side av panelet

Trinn 3) Kopier metadata knyttet til filen, filtillatelse og annen informasjon
Kopifunksjonen kopierer bare innholdet i filen, men ingen annen informasjon. Å kopiere metadata knyttet til filen, filtillatelsen og annen informasjon du må bruke "kopistat" funksjon. Før vi kjører denne koden, må vi slette kopifilen vår "guru99.text.bak".

Kopier en fil inn Python

Når du har slettet filen og kjører programmet vil det lage en kopi av .txt-filen din, men denne gangen med all informasjon som f.eks. filtillatelse, endringstid og metadatainformasjon. Du kan gå til OS-skallet for å bekrefte informasjonen.

Kopier en fil inn Python

Her er koden

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

Trinn 4) Hent informasjonen
Du kan hente informasjonen om tekstfilen sist endret

Kopier en fil inn Python

  • Kodelinje#15- Den forteller dagen, datoen, måneden, året og klokkeslettet da .txt-filen (guru99) sist ble endret. Vi bruker banemodulen for å få informasjon om filmodifiseringstid, og så skal vi bruke tidsklasser c tidsfunksjon å konvertere det til en lesbar tid. Så når vi kjører koden, kan vi se at filen guru99.txt sist ble endret man 8. januarth klokken 13:35 2018.
  • Kodelinje#17- Den gjør det samme og gir informasjon om filmodifisering, men den har et annet format for å representere det. Her bruker vi Få funksjonen Modifikasjonstid (path.getmtime(“guru99.txt”)). Nå i stedet for å bruke c-tidsfunksjonen vi skal bruke Fra tidsstempelfunksjon og skal konstruere et dato-tidsobjekt. I utdata kan du se at detaljene for filendring skrives ut i forskjellig format 2018-01-08, 13:35:51.334072

Her er koden

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

Sammendrag

  • For å lage en kopi av den eksisterende filen ved å bruke kode shutil.copy (src,dst)
  • For å kopiere all informasjon fra originalfilen til duplisere fil som filtillatelse, endringstid eller metadatainformasjon ved å bruke koden shutil.copystat(src,dst)