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 โ
- Erklรฆrer variabel
- Anvendelse af splitfunktion pรฅ variabel
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.splitfunktion 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."
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".
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.
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
-
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)





