Python-kopifilmetoder
Python leverer indbyggede funktioner til let kopiering af filer ved hjælp af operativsystemets 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 metadatainformation
shutil.copystat(src,dst)
Her er trinene til kopiering af fil i Python
Trin 1) Før vi kopierer en fil, skal vi finde stien til den originale fil i den aktuelle mappe. I koden -
- Erklærende variabel
- Anvender splitfunktion på variabel
Kode Forklaring
- Først skal vi kontrollere, at vores "guru99.txt" -fil eksisterer eller ikke. Da vi har oprettet guru99.txt-filen tidligere, ved vi, at den findes, og vi fortsætter videre med koden
- Vi gemmer filstien i variablen " src ", hvis din fil findes
- Når vi først har fundet stien, adskiller vi stien og filnavnet
- Til det skal vi bruge splitfunktionen
path.split
på kildevariablen - Kode, når den udføres, udskriver " filnavn " og " filsti " separat
Trin 2) Vi bruger Shutil Module til at oprette 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 bogstaver .bak i slutningen "guru99.txt.bak". Dette navn med .bak-udvidelse bliver vores duplikatkopi
- Og så skal vi bruge værktøjets kopifunktion til at kopiere fra kilde til destinationen
- Når du kører koden, vil du se en duplikatfil med .bak-udvidelse oprettes på højre side af panelet
Trin 3) Kopifunktion kopierer kun indholdet af filen, men ingen andre oplysninger. For at kopiere metadata, der er knyttet til filen, filtilladelse og andre oplysninger, skal du bruge " copystat " -funktionen. 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, opretter den en kopi af din .txt-fil, men denne gang med alle oplysninger som filtilladelse, ændringstid og metadatainformation . Du kan gå til din OS-skal for at bekræfte oplysningerne.
Her er koden
import osimport shutilfrom os import pathdef main():# make a duplicate of an existing fileif path.exists("guru99.txt"):# get the path to the file in the current directorysrc = path.realpath("guru99.txt");#seperate the path from the filterhead, tail = path.split(src)print("path: +head)print("file: +tail)#let's make a backup copy by appending "bak" to the namedst = src+".bak"# nowuse the shell to make a copy of the fileshutil.copy(src, dst)#copy over the permissions,modificationshutil.copystat(src,dst)if __name__=="__main__":main()
Trin 4) Du kan hente oplysningerne om den sidst ændrede tekstfil
- Kodelinje nr. 15- Den fortæller dag, dato, måned, år og tid, da .txt-filen (guru99) sidst blev ændret. Vi bruger stimodulet til at få detaljer om filændringstiden, og så skal vi bruge tidsklasser c-tidsfunktionen til at konvertere det til en læsbar tid. Så når vi køre koden, kan vi se filen guru99.txt blev senest ændret Mon, 8 jan th ved 13:35 2018.
- Kodelinje nr. 17- Det gør det samme med information om filændring, men det har et andet format til at repræsentere det. Her bruger vi funktionen Get Modification Time (path.getmtime ("guru99.txt")). Nu i stedet for at bruge c-tidsfunktionen vil vi bruge Fra tidsstempel-funktionen og konstruere et dato-tidsobjekt. I output kan du se, at filændringstidsdetaljer udskrives i forskellige format 08-01-2018, 13: 35: 51.334072
Her er koden
## Example file for working with o.s path moduleimport osfrom os import pathimport datetimefrom datetime import date, time, timedeltaimport timedef main():# Get the modification timet = time.ctime(path.getmtime("guru99.txt.bak"))print(t)print(datetime.datetime.fromtimestamp(path.getmtime("guru99.txt.bak")))if __name__ == "__main__":main()
Resumé
- For at oprette en kopi af den eksisterende fil ved hjælp af kode shutil.copy (src, dst)
- For at kopiere alle oplysningerne i den originale fil til at duplikere filen som filtilladelse, ændringstid eller metadatainformation ved hjælp af kode shutil.copystat (src, dst)