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 โ
- Erklรฆrer variabel
- Bruker delt funksjon pรฅ variabel
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.splitfunksjon 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."
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".
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.
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
-
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)





