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)

Oppsummer dette innlegget med: