Kopiraj datoteku u Python: metoda shutil.copy(), shutil.copystat().

⚡ Pametni sažetak

Python kopira datoteke pomoću modula shutil. shutil.copy() duplicira sadržaj datoteke, dok shutil.copystat() također kopira dozvole, vrijeme izmjene i metapodatke. Ovdje ćete naučiti obje metode s detaljnim primjerom.

  • 📋 shutil.copy(): shutil.copy(src, dst) kopira sadržaj datoteke na novo odredište.
  • 🗂️ shutil.copystat(): shutil.copystat(src, dst) također kopira dozvole, vrijeme i metapodatke.
  • 🤖 Pomoć umjetne inteligencije: Alati umjetne inteligencije poput Copilota trenutno generiraju kod za kopiranje shutila.

Kopiraj datoteku u Python

Python Metode kopiranja datoteke

Python pruža ugrađene funkcije za jednostavno kopiranje datoteka pomoću Operating uslužnih programa System Shell.

Sljedeća naredba koristi se za kopiranje datoteke

shutil.copy(src,dst)

Sljedeća naredba koristi se za kopiranje datoteke s informacijama o metapodacima

shutil.copystat(src,dst)

Kako kopirati datoteku u Python

Evo koraka za kopiranje datoteke Python pomoću metode shutil copy():

Korak 1) Snimite izvorni put u trenutnom direktoriju
Prije nego što kopiramo datoteku, moramo dobiti put do izvorne datoteke u trenutnom direktoriju. U kodu –

  1. Deklariranje varijable
  2. Primjena funkcije split na varijablu

Kopiraj datoteku u Python

Code Objašnjenje

  • Prvo ćemo provjeriti postoji li naša datoteka "guru99.txt" ili ne. Budući da smo ranije kreirali datoteku guru99.txt, znamo da postoji i nastavit ćemo s kodom
  • Put datoteke pohranjujemo u varijablu "src” ako vaša datoteka postoji
  • Kada dobijemo putanju, odvojit ćemo putanju i naziv datoteke
  • Za to ćemo koristiti split path.split funkcija na izvornoj varijabli
  • Code kada se izvrši ispisuje "Naziv datoteke"A"put datoteke” odvojeno

Korak 2) Napravite kopiju naše postojeće datoteke pomoću shutil modula
Koristimo Shutil modul za izradu kopije postojeće datoteke. Ovdje smo koristili za stvaranje kopije naše postojeće datoteke "guru99.txt."

Kopiraj datoteku u Python

Code Objašnjenje

  • Uzmite originalni naziv datoteke “guru99.txt” i dodajte slova .bak na kraju “guru99.txt.bak”. Ovo ime s ekstenzijom .bak bit će naš duplikat
  • Zatim ćemo upotrijebiti funkciju kopiranja uslužnog programa za kopiranje od izvora do odredišta
  • Kada pokrenete kôd, vidjet ćete da se duplikat datoteke s nastavkom .bak stvara na desnoj strani ploče

Korak 3) Kopirajte meta-podatke povezane s datotekom, dopuštenje datoteke i druge informacije
Funkcija kopiranja kopira samo sadržaj datoteke, ali ne i druge podatke. Kopirati metapodaci povezan s datotekom, dopuštenje za datoteku i druge informacije koje morate koristiti “copystat” funkcija. Prije nego što pokrenemo ovaj kod, moramo obrisati kopiju datoteke "guru99.text.bak".

Kopiraj datoteku u Python

Nakon što izbrišete datoteku i pokrenete program, on će stvoriti kopiju vaše .txt datoteke, ali ovaj put sa svim informacijama poput dopuštenje datoteke, vrijeme izmjene i informacije o metapodacima. Možete otići u ljusku svog OS-a da provjerite informacije.

Kopiraj datoteku u Python

Evo koda

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

Korak 4) Dohvati informacije
Možete dohvatiti informacije o zadnjoj izmjeni tekstualne datoteke

Kopiraj datoteku u Python

  • Code Redak br. 15 - Prikazuje dan, datum, mjesec, godinu i vrijeme kada je .txt datoteka (guru99) zadnji put izmijenjena. Koristimo modul putanje kako bismo dobili detalje o vremenu izmjene datoteke, a zatim ćemo koristiti vremenski razredi c vremenska funkcija pretvoriti to u čitljivo vrijeme. Dakle, kada pokrenemo kod, možemo vidjeti da je datoteka guru99.txt zadnja modificirana Pon, 8. siječnjath u 13:35 2018.
  • Code Redak #17 - Radi istu stvar dajući informacije o modifikaciji datoteke, ali ima drugačiji format za predstavljanje. Ovdje koristimo Dobijte funkciju vremena izmjene (path.getmtime(“guru99.txt”)). Umjesto da koristimo c vremensku funkciju, koristit ćemo se Iz funkcije Time Stamp i konstruirati objekt datuma i vremena. U izlazu možete vidjeti detalje o vremenu izmjene datoteke ispisane u drugom formatu 2018-01-08, 13:35:51.334072

Evo koda

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

Pitanja i odgovori

Uvezite shutil, a zatim pozovite shutil.copy(src, dst) za kopiranje sadržaja datoteke. Koristite shutil.copystat() za kopiranje i njenih metapodataka.

shutil.copystat(src, dst) kopira dozvole datoteke, vrijeme izmjene i metapodatke na odredište, ali ne i njezin sadržaj.

shutil.copy() kopira sadržaj i dozvole, dok shutil.copy2() također čuva metapodatke poput vremenskih oznaka. Koristite copy2() za čuvanje vremena izmjene.

shutil.copy() prihvaća odredišni direktorij i kopira dozvole; shutil.copyfile() treba punu putanju datoteke i kopira samo sadržaj.

Koristite shutil.copytree(src, dst) za rekurzivno kopiranje cijelog direktorija i njegovog sadržaja. Odredišna mapa ne smije već postojati.

AI asistenti poput GitHub Copilota automatski dovršavaju pozive shutil.copy() i copystat() te predlažu copy2() ili copytree() za vaš slučaj.

Da. Alati pokretani umjetnom inteligencijom generiraju rutine sigurnosne kopije, odabiru pravu metodu zatvaranja i dodaju provjere postojanja prije kopiranja datoteka ili mapa.

Koristite os.path.getmtime(path) za dobivanje vremenske oznake, a zatim je pretvorite pomoću time.ctime() ili datetime.fromtimestamp() za čitljiv datum.

Sažmite ovu objavu uz: