Kopiera filen in Python: shutil.copy(), shutil.copystat() metod

โšก Smart sammanfattning

Python kopierar filer med shutil-modulen. shutil.copy() duplicerar en fils innehรฅll, medan shutil.copystat() ocksรฅ kopierar behรถrigheter, รคndringstid och metadata. Hรคr lรคr du dig bรฅda metoderna med ett steg-fรถr-steg-exempel.

  • ๐Ÿ“‹ shutil.copy(): shutil.copy(src, dst) kopierar en fils innehรฅll till en ny destination.
  • ๐Ÿ—‚๏ธ shutil.copystat(): shutil.copystat(src, dst) kopierar รคven behรถrigheter, tid och metadata.
  • ๐Ÿค– AI-hjรคlp: AI-verktyg som Copilot genererar shutil-kopiakod direkt.

Kopiera filen in Python

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

Code Fรถ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
  • Code 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

Code Fรถ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

  • Code Rad 15 - Den anger dag, datum, mรฅnad, รฅr och tidpunkt dรฅ .txt-filen (guru99) senast รคndrades. Vi anvรคnder path-modulen fรถr att hรคmta information om filรคndringstidpunkten, 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.
  • Code Rad 17 โ€“ Den gรถr samma sak och ger information om filmodifiering, 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()

Vanliga frรฅgor

Importera shutil och anropa sedan shutil.copy(src, dst) fรถr att kopiera filens innehรฅll. Anvรคnd shutil.copystat() fรถr att รคven kopiera dess metadata.

shutil.copystat(src, dst) kopierar en fils behรถrigheter, รคndringstid och metadata till destinationen, men inte dess innehรฅll.

shutil.copy() kopierar innehรฅll och behรถrigheter, medan shutil.copy2() ocksรฅ bevarar metadata som tidsstรคmplar. Anvรคnd copy2() fรถr att behรฅlla รคndringstiden.

shutil.copy() accepterar en katalogdestination och kopierar behรถrigheter; shutil.copyfile() behรถver en fullstรคndig sรถkvรคg och kopierar endast innehรฅllet.

Anvรคnd shutil.copytree(src, dst) fรถr att rekursivt kopiera en hel katalog och dess innehรฅll. Mรฅlmappen fรฅr inte redan finnas.

AI-assistenter som GitHub Copilot autokompletterar shutil.copy() och copystat() och fรถreslรฅr copy2() eller copytree() fรถr ditt fall.

Ja. AI-drivna verktyg genererar sรคkerhetskopieringsrutiner, vรคljer rรคtt shutil-metod och lรคgger till existenskontroller innan filer eller mappar kopieras.

Anvรคnd os.path.getmtime(path) fรถr att hรคmta tidsstรคmpeln och konvertera den sedan med time.ctime() eller datetime.fromtimestamp() fรถr ett lรคsbart datum.

Sammanfatta detta inlรคgg med: