Kopiera filen in Python: shutil.copy(), shutil.copystat() metod
Python Kopiera filmetoder
Python ger inbyggda funktioner för att enkelt kopiera filer med hjälp av OperaTing System Shell-verktyg.
Följande kommando används för att kopiera fil
shutil.copy(src,dst)
Följande kommando används för att kopiera fil med metadatainformation
shutil.copystat(src,dst)
Hur man kopierar en fil i Python
Här är stegen för att kopiera filen i Python med metoden shutil copy():
Steg 1) Fånga den ursprungliga sökvägen i den aktuella katalogen
Innan vi kopierar en fil måste vi få sökvägen till originalfilen i den aktuella katalogen. I koden –
- Deklarerar variabel
- Använder delad funktion på variabel
Kodförklaring
- Först ska vi kontrollera att vår "guru99.txt"-fil finns eller inte. Eftersom vi har skapat filen guru99.txt tidigare vet vi att den finns, och vi kommer att fortsätta med koden
- Vi lagrar filsökvägen i variabeln "src" om din fil finns
- När vi väl har fått sökvägen kommer vi att separera sökvägen och filnamnet
- För det kommer vi att använda splittringen
path.split
funktion på källvariabel - Koden när den körs skrivs ut "filnamn"Och"sökväg" separat
Steg 2) Skapa en kopia av vår befintliga fil med shutil-modulen
Vi använder Shutil Module för att skapa en kopia av den befintliga filen. Här brukade vi skapa en kopia av vår befintliga fil "guru99.txt."
Kodförklaring
- Ta det ursprungliga filnamnet "guru99.txt" och lägg till bokstäverna .bak i slutet "guru99.txt.bak". Det här namnet med tillägget .bak kommer att bli vår kopia
- Och sedan kommer vi att använda verktygets kopieringsfunktion för att kopiera från källan till destinationen
- När du kör koden kommer du att se en dubblettfil med tillägget .bak skapas på höger sida av panelen
Steg 3) Kopiera metadata som är associerade med filen, filbehörighet och annan information
Kopieringsfunktionen kopierar bara innehållet i filen men ingen annan information. Att kopiera metadata associerad med filen, filbehörighet och annan information som du måste använda "copystat" funktion. Innan vi kör den här koden måste vi ta bort vår kopia fil "guru99.text.bak".
När du har tagit bort filen och kört programmet kommer det att skapa en kopia av din .txt-fil men den här gången med all information som t.ex. filbehörighet, ändringstid och metadatainformation. Du kan gå till ditt OS-skal för att verifiera informationen.
Här är 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()
Steg 4) Hämta informationen
Du kan hämta informationen om den senast ändrade textfilen
-
Kodrad #15- Den talar om dag, datum, månad, år och tid när .txt-filen (guru99) senast ändrades. Vi använder sökvägsmodulen för att få information om filändringstid, och sedan kommer vi att använda tidsklasser c tidsfunktion för att omvandla det till en läsbar tid. Så när vi kör koden kan vi se att filen guru99.txt senast ändrades den mån 8 januarith klockan 13:35 2018.
-
Kodrad #17- Den gör samma sak och ger information om filändring, men den har ett annat format för att representera det. Här använder vi Få funktionen Modifieringstid (path.getmtime(“guru99.txt”)). Nu istället för att använda c-tidsfunktionen vi kommer att använda Från tidsstämpelfunktionen och kommer att konstruera ett datum och tid objekt. I utdata kan du se filändringstidsdetaljer skrivs ut i olika format 2018-01-08, 13:35:51.334072
Här är 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()
Sammanfattning
- Använd kod för att skapa en kopia av den befintliga filen shutil.copy (src,dst)
- För att kopiera all information från originalfilen till dubblettfil som filbehörighet, ändringstid eller metadatainformation genom att använda koden shutil.copystat(src,dst)