Methoden voor het kopiëren van Python
Python biedt ingebouwde functies voor het eenvoudig kopiëren van bestanden met behulp van de hulpprogramma's voor het besturingssysteem Shell.
De volgende opdracht wordt gebruikt om het bestand te kopiëren
shutil.copy(src,dst)
De volgende opdracht wordt gebruikt om een bestand met metaData-informatie te kopiëren
shutil.copystat(src,dst)
Hier zijn de stappen om een bestand in Python te kopiëren
Stap 1) Voordat we een bestand kopiëren, moeten we het pad naar het originele bestand in de huidige map ophalen. In de code -
- Variabele declareren
- Split-functie toepassen op variabele
Code Verklaring
- Eerst gaan we controleren of ons "guru99.txt" -bestand bestaat of niet. Omdat we eerder het bestand guru99.txt 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 split-
path.split
functie op de bronvariabele gebruiken - Bij uitvoering van code worden " bestandsnaam " en " bestandspad " afzonderlijk afgedrukt
Stap 2) We gebruiken de Shutil-module om een kopie van het bestaande bestand te maken. Hier gebruikten we om een kopie van ons bestaande bestand "guru99.txt" te maken.
Code Verklaring
- Neem de originele bestandsnaam "guru99.txt" en voeg letters .bak toe aan het einde "guru99.txt.bak". Deze naam met de extensie .bak wordt onze dubbele kopie
- En dan gaan we de kopieerfunctie van het hulpprogramma gebruiken om van bron naar 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) Kopieerfunctie kopieert alleen de inhoud van het bestand, maar geen andere informatie. Om meta-data geassocieerd met het bestand, bestandsrechten en andere informatie te kopiëren , moet je de " copystat " -functie gebruiken. Voordat we deze code uitvoeren, moeten we ons kopieerbestand "guru99.text.bak" verwijderen.
Nadat je het bestand hebt verwijderd en het programma hebt uitgevoerd, wordt er een kopie van je .txt-bestand gemaakt, maar deze keer met alle informatie zoals bestandsrechten, wijzigingstijd en metagegevens . U kunt naar uw OS-shell gaan om de informatie te verifiëren.
Hier is de code
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()
Stap 4) U kunt de informatie over het laatst gewijzigde tekstbestand ophalen
- Coderegel # 15- Het vertelt de dag, datum, maand, jaar en tijd waarop .txt-bestand (guru99) voor het laatst is gewijzigd. We gebruiken de padmodule om de details van de bestandswijzigingstijd op te halen, en dan gaan we de tijdklassen c time-functie gebruiken om dat in een leesbare tijd om te zetten. Dus toen we de code uit te voeren, kunnen we zien het bestand guru99.txt voor het laatst gewijzigd op Maa 8 Jan ste op 13:35 2.018.
- Coderegel # 17- Het doet hetzelfde en geeft informatie over het wijzigen van bestanden, maar het heeft een ander formaat om het weer te geven. Hier gebruiken we de functie Get Modification Time (path.getmtime ("guru99.txt")). In plaats van de c time-functie te gebruiken, gaan we de functie From Time Stamp gebruiken en een datum-tijdobject construeren. In de uitvoer kunt u zien dat de details van de bestandswijzigingstijd worden afgedrukt in een ander formaat 2018-01-08, 13:35: 51.334072
Hier is de code
## 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()
Overzicht
- Om een kopie van het bestaande bestand te maken met code shutil.copy (src, dst)
- Om alle informatie van het originele bestand naar een duplicaatbestand te kopiëren, zoals bestandstoestemming, wijzigingstijd of metagegevensinformatie, gebruikt u code shutil.copystat (src, dst)