Copiați fișierul în Python: metoda shutil.copy(), shutil.copystat().
Python Metode de copiere a fișierelor
Python oferă funcții încorporate pentru copierea cu ușurință a fișierelor folosind Operautilitare System Shell.
Următoarea comandă este folosită pentru a copia fișierul
shutil.copy(src,dst)
Următoarea comandă este folosită pentru a copia fișierul cu informații despre metadate
shutil.copystat(src,dst)
Cum să copiați un fișier în Python
Iată pașii pentru a copia fișierul în Python folosind metoda shutil copy():
Pas 1) Capturați calea originală în directorul curent
Înainte de a copia un fișier, trebuie să obținem calea către fișierul original din directorul curent. În cod -
- Declararea variabilei
- Aplicarea funcției split pe variabilă
Explicarea codului
- Mai întâi vom verifica dacă fișierul nostru „guru99.txt” există sau nu. Deoarece am creat fișierul guru99.txt mai devreme, știm că există și vom continua cu codul
- Stocăm calea fișierului în variabila „src” dacă fișierul dumneavoastră există
- Odată ce obținem calea, vom separa calea și numele fișierului
- Pentru asta, vom folosi diviziunea
path.split
funcţie pe variabila sursă - Codul când este executat se afișează „nume de fișier"Și"calea fișierului" separat
Pas 2) Creați o copie a fișierului nostru existent folosind modulul Shuil
Folosim Modulul Shutil pentru a crea o copie a fișierului existent. Aici am creat o copie a fișierului nostru existent „guru99.txt”.
Explicarea codului
- Luați numele original al fișierului „guru99.txt” și adăugați literele .bak la sfârșit „guru99.txt.bak”. Acest nume cu extensia .bak va fi copia noastră duplicată
- Și apoi vom folosi funcția de copiere a utilitarului pentru a copia de la sursă la destinație
- Când rulați codul, veți vedea un fișier duplicat cu extensia .bak este creat în partea dreaptă a panoului
Pas 3) Copiați metadatele asociate fișierului, permisiunea fișierului și alte informații
Funcția de copiere copiază doar conținutul fișierului, dar nu alte informații. A copia meta-date asociat cu fișierul, permisiunea fișierului și alte informații pe care trebuie să le utilizați „copystat”funcție. Înainte de a rula acest cod, trebuie să ștergem fișierul nostru de copiere „guru99.text.bak”.
Odată ce ați șters fișierul și ați rulat programul, acesta va crea o copie a fișierului dvs. .txt, dar de data aceasta cu toate informațiile precum permisiunea fișierului, timpul de modificare și informațiile despre metadate. Puteți accesa shell-ul sistemului de operare pentru a verifica informațiile.
Iată codul
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()
Pas 4) Preluați informațiile
Puteți prelua informațiile despre fișierul text modificat ultima dată
-
Linia de cod # 15- Indică ziua, data, luna, anul și ora când fișierul .txt (guru99) a fost modificat ultima dată. Folosim modulul cale pentru a obține detaliile timpului de modificare a fișierului și apoi vom folosi clase de timp c funcţie de timp pentru a-l converti într-un timp lizibil. Deci, când rulăm codul, putem vedea că fișierul guru99.txt a fost modificat ultima dată Luni, 8 ianth la 13:35 2018.
-
Linia de cod #17 - Face același lucru, oferind informații despre modificarea fișierului, dar are un format diferit pentru a-l reprezenta. Aici folosim Obține funcția de modificare a timpului (path.getmtime ("guru99.txt")). Acum, în loc să folosim funcția c timp, vom folosi Din funcția Time Stamp și de a construi un obiect dată și oră. În ieșire, puteți vedea că detaliile privind timpul de modificare a fișierului sunt tipărite în format diferit 2018-01-08, 13:35:51.334072
Iată codul
# # 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()
Rezumat
- Pentru a crea o copie a fișierului existent utilizând codul shutil.copy (src,dst)
- Pentru a copia toate informațiile fișierului original în fișierul duplicat, cum ar fi permisiunea fișierului, timpul de modificare sau informații despre metadate folosind codul shutil.copystat(src,dst)