Kopieer bestand naar Python: shutil.copy(), shutil.copystat() methode
โก Slimme samenvatting
Python Met de shutil-module kopieert u bestanden. shutil.copy() dupliceert de inhoud van een bestand, terwijl shutil.copystat() ook de machtigingen, de wijzigingstijd en de metadata kopieert. Hier leert u beide methoden aan de hand van een stapsgewijs voorbeeld.

Python Bestandsmethoden kopiรซren
Python biedt ingebouwde functies voor het eenvoudig kopiรซren van bestanden met behulp van de OperaSystem Shell-hulpprogramma's installeren.
De volgende opdracht wordt gebruikt om een โโbestand te kopiรซren
shutil.copy(src,dst)
De volgende opdracht wordt gebruikt om een โโbestand met metagegevensinformatie te kopiรซren
shutil.copystat(src,dst)
Hoe u een bestand naar binnen kunt kopiรซren Python
Hier zijn de stappen om het bestand te kopiรซren Python 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 โ
- Variabele declareren
- Splitsfunctie toepassen op variabele
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.splitfunctie op de bronvariabele - Code Bij uitvoering wordt het volgende 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.โ
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.
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.
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
-
Code Regel 15 - Deze geeft de dag, datum, maand, jaar en tijd weer waarop het .txt-bestand (guru99) voor het laatst is gewijzigd. We gebruiken de `path`-module om de details van de wijzigingstijd van het bestand te verkrijgen, en vervolgens gaan we de tijdklassen c tijdfunctie om dat om te zetten in een leesbare tijd. Dus wanneer we de code uitvoeren, kunnen we zien dat het bestand guru99.txt voor het laatst is gewijzigd op ma 8 janth om 13:35 2018.
-
Code Regel 17 - Deze doet hetzelfde door informatie te geven over bestandsaanpassingen, maar gebruikt een ander formaat om dit weer te geven. Hier gebruiken we 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()





