Kopier fil ind Python: shutil.copy(), shutil.copystat() metode

Python Kopier filmetoder

Python giver indbyggede funktioner til nemt at kopiere filer ved hjรฆlp af Operating System Shell-vรฆrktรธjer.

Fรธlgende kommando bruges til at kopiere fil

shutil.copy(src,dst)

Fรธlgende kommando bruges til at kopiere fil med metadataoplysninger

shutil.copystat(src,dst)

Sรฅdan kopieres en fil ind Python

Her er trinene til at kopiere filen ind Python ved at bruge shutil copy() metoden:

Trin 1) Indfang den oprindelige sti i den aktuelle mappe
Fรธr vi kopierer en fil, skal vi hente stien til den originale fil i den aktuelle mappe. I koden โ€“

  1. Erklรฆrer variabel
  2. Anvendelse af splitfunktion pรฅ variabel

Kopier en fil ind Python

Kode Forklaring

  • Fรธrst skal vi kontrollere, at vores "guru99.txt" fil eksisterer eller ej. Da vi har oprettet filen guru99.txt tidligere, ved vi, at den eksisterer, og vi vil fortsรฆtte med koden
  • Vi gemmer filstien i variablen "src" hvis din fil eksisterer
  • Nรฅr vi har fรฅet stien, skal vi adskille stien og filnavnet
  • Til det kommer vi til at bruge opdelingen path.split funktion pรฅ kildevariabel
  • Koden udskrives, nรฅr den udfรธres "filnavn"Og"filsti" hver for sig

Trin 2) Opret en kopi af vores eksisterende fil ved hjรฆlp af shutil-modulet
Vi bruger Shutil Module til at lave en kopi af den eksisterende fil. Her plejede vi at oprette en kopi af vores eksisterende fil "guru99.txt."

Kopier en fil ind Python

Kode Forklaring

  • Tag det originale filnavn "guru99.txt" og tilfรธj bogstaverne .bak i slutningen "guru99.txt.bak". Dette navn med .bak-udvidelsen bliver vores dubletkopi
  • Og sรฅ skal vi bruge hjรฆlpeprogrammets kopifunktion til at kopiere fra kilden til destinationen
  • Nรฅr du kรธrer koden, vil du se en dubletfil med filtypenavnet .bak er oprettet pรฅ hรธjre side af panelet

Trin 3) Kopiรฉr metadata knyttet til filen, filtilladelse og andre oplysninger
Kopifunktionen kopierer kun indholdet af filen, men ingen anden information. At kopiere metadata forbundet med filen, filtilladelsen og andre oplysninger, du skal bruge "kopistat" funktion. Fรธr vi kรธrer denne kode, skal vi slette vores kopifil "guru99.text.bak".

Kopier en fil ind Python

Nรฅr du har slettet filen og kรธrt programmet, vil det oprette en kopi af din .txt-fil, men denne gang med alle oplysninger som f.eks. filtilladelse, รฆndringstidspunkt og metadataoplysninger. Du kan gรฅ til din OS-skal for at bekrรฆfte oplysningerne.

Kopier en fil ind 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()

Trin 4) Hent oplysningerne
Du kan hente oplysningerne om den sidst รฆndrede tekstfil

Kopier en fil ind Python

  • Kodelinje#15- Den fortรฆller dagen, datoen, mรฅneden, รฅret og klokkeslรฆttet, hvor .txt-filen (guru99) sidst blev รฆndret. Vi bruger stimodulet til at fรฅ oplysninger om filรฆndringstid, og sรฅ skal vi bruge tidsklasser c tidsfunktion at konvertere det til en lรฆsbar tid. Sรฅ nรฅr vi kรธrer koden, kan vi se filen guru99.txt sidst blev รฆndret den man, 8 janth 13:35 2018.
  • Kodelinje#17- Det gรธr det samme, der giver information om filรฆndringer, men det har et andet format til at reprรฆsentere det. Her bruger vi Fรฅ funktionen ร†ndringstid (path.getmtime(โ€œguru99.txtโ€)). I stedet for at bruge c-tidsfunktionen vil vi nu bruge Fra tidsstempelfunktionen og vil konstruere et dato-tidsobjekt. I output kan du se detaljer om filรฆndringstid udskrives i andet 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()

Resumรฉ

  • Brug kode for at oprette en kopi af den eksisterende fil shutil.copy (src,dst)
  • For at kopiere alle oplysningerne fra den originale fil til at kopiere fil som filtilladelse, รฆndringstidspunkt eller metadataoplysninger ved at bruge koden shutil.copystat(src,dst)

Opsummer dette indlรฆg med: