Kopieer het bestand in Python: shutil.copy(), shutil.copystat() methode

Python-bestandsmethoden kopiëren

Python biedt ingebouwde functies voor het eenvoudig kopiëren van bestanden met behulp van de Shell-hulpprogramma's van het besturingssysteem.

Following opdracht wordt gebruikt om het bestand te kopiëren

shutil.copy(src,dst)

Following opdracht wordt gebruikt om een ​​bestand met metadata-informatie te kopiëren

shutil.copystat(src,dst)

Hoe een bestand in Python te kopiëren

Hier zijn de stappen om het bestand in Python te kopiëren met behulp van de shutil copy() -methode:

Stap 1) Leg het originele pad in de huidige map vast
Voordat we een bestand kopiëren, moeten we het pad naar het originele bestand in de huidige map ophalen. In de code –

  1. Variabele declareren
  2. Splitsfunctie toepassen op variabele

Kopieer een bestand in Python

Code Uitleg

  • Eerst gaan we controleren of ons bestand “guru99.txt” bestaat of niet. Omdat we het bestand guru99.txt eerder hebben gemaakt, weten we dat het bestaat en gaan we verder met de code
  • We slaan het bestandspad op in de variabele “src'Als uw bestand bestaat
  • Zodra we het pad hebben, gaan we het pad en de bestandsnaam scheiden
  • Daarvoor gaan we de splitsing gebruiken path.split functie op de bronvariabele
  • Code wanneer uitgevoerd wordt afgedrukt “bestandsnaam"En"bestandspad"afzonderlijk

Stap 2) Maak een kopie van ons bestaande bestand met behulp van de shutil-module
We gebruiken Shutil Module om een ​​kopie van het bestaande bestand te maken. Hier maakten we een kopie van ons bestaande bestand “guru99.txt.”

Kopieer een bestand in Python

Code Uitleg

  • Neem de originele bestandsnaam “guru99.txt” en voeg de letters .bak toe aan het einde “guru99.txt.bak”. Deze naam met de .bak-extensie wordt ons dubbele exemplaar
  • En dan gaan we de kopieerfunctie van het hulpprogramma gebruiken om van de bron naar de bestemming te kopiëren
  • Wanneer u de code uitvoert, ziet u aan de rechterkant van het paneel een duplicaatbestand met de extensie .bak

Stap 3) Kopieer metagegevens die aan het bestand zijn gekoppeld, bestandsrechten en andere informatie
De kopieerfunctie kopieert alleen de inhoud van het bestand, maar geen andere informatie. Kopiëren metadata geassocieerd met het bestand, bestandsrechten en andere informatie die u moet gebruiken “kopieerstat” functie. Voordat we deze code uitvoeren, moeten we ons kopieerbestand “guru99.text.bak” verwijderen.

Kopieer een bestand in Python

Nadat u het bestand hebt verwijderd en het programma hebt uitgevoerd, wordt er een kopie van uw .txt-bestand gemaakt, maar deze keer met alle informatie zoals bestandsrechten, wijzigingstijd en metadata-informatie. U kunt naar uw besturingssysteemshell gaan om de informatie te verifiëren.

Kopieer een bestand in Python

Hier is de code

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()

Stap 4) Haal de informatie op
U kunt de informatie ophalen over het tekstbestand dat het laatst is gewijzigd

Kopieer een bestand in Python

  • Coderegel#15- Geeft de dag, datum, maand, jaar en tijd aan waarop het .txt-bestand (guru99) voor het laatst is gewijzigd. We gebruiken de padmodule om de wijzigingstijd van het bestand de te verkrijgentails, en dan gaan we de tijdklassen c tijdfunctie om dat om te zetten in een leesbare tijd. Dus als we de code uitvoeren, kunnen we zien dat het bestand guru99.txt voor het laatst is gewijzigd ma 8 janth om 13:35 2018.
  • Coderegel#17- Het doet hetzelfde en geeft informatie over bestandswijzigingen, maar het heeft een ander formaat om dit weer te geven. Hier gebruiken wij Krijg de functie Wijzigingstijd (pad.getmtime(“guru99.txt”)). In plaats van de c-tijdfunctie te gebruiken, gaan we nu gebruiken Van tijdstempelfunctie en een datum-tijdobject gaan construeren. In de uitvoer kunt u zien dat de tijdsdetails voor bestandswijzigingen in een ander formaat worden afgedrukt 2018-01-08, 13:35:51.334072

Hier is de code

#
# 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()

Samengevat

  • Gebruik code om een ​​kopie van het bestaande bestand te maken shutil.copy (src,dst)
  • Om alle informatie van het originele bestand te kopiëren naar een duplicaatbestand zoals bestandsrechten, wijzigingstijd of metadata-informatie door code shutil.copystat(src,dst) te gebruiken