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)