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 -

  1. Declararea variabilei
  2. Aplicarea funcției split pe variabilă

Copiați un fișier în Python

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”.

Copiați un fișier în Python

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”.

Copiați un fișier în Python

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.

Copiați un fișier în Python

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ă

Copiați un fișier în Python

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