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 –

  1. Deklarerar variabel
  2. Använder delad funktion på variabel

Kopiera in en fil Python

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."

Kopiera in en fil Python

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".

Kopiera in en fil Python

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.

Kopiera in en fil Python

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

Kopiera in en fil Python

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