Skopiuj plik do Python: metoda shutil.copy(), shutil.copystat().

Python Metody kopiowania plikรณw

Python udostฤ™pnia wbudowane funkcje umoลผliwiajฤ…ce ล‚atwe kopiowanie plikรณw przy uลผyciu formatu Operauruchamianie narzฤ™dzi powล‚oki systemowej.

Do kopiowania pliku uลผywa siฤ™ nastฤ™pujฤ…cego polecenia

shutil.copy(src,dst)

Poniลผsze polecenie sล‚uลผy do kopiowania pliku z informacjami metadanych

shutil.copystat(src,dst)

Jak skopiowaฤ‡ plik do Python

Oto kroki, aby skopiowaฤ‡ plik Python uลผywajฤ…c metody Shutil copy():

Krok 1) Przechwyฤ‡ oryginalnฤ… ล›cieลผkฤ™ w bieลผฤ…cym katalogu
Zanim skopiujemy plik, musimy uzyskaฤ‡ ล›cieลผkฤ™ do oryginalnego pliku w bieลผฤ…cym katalogu. W kodzie โ€“

  1. Deklarowanie zmiennej
  2. Stosowanie funkcji podziaล‚u na zmiennej

Skopiuj plik do Python

Objaล›nienie kodu

  • Najpierw sprawdzimy, czy nasz plik โ€žguru99.txtโ€ istnieje, czy nie. Poniewaลผ wczeล›niej utworzyliล›my plik guru99.txt, wiemy, ลผe istnieje i bฤ™dziemy kontynuowaฤ‡ pracฤ™ z kodem
  • ลšcieลผkฤ™ pliku przechowujemy w zmiennej โ€žsrcโ€, jeล›li Twรณj plik istnieje
  • Gdy juลผ otrzymamy ล›cieลผkฤ™, oddzielimy ล›cieลผkฤ™ i nazwฤ™ pliku
  • W tym celu uลผyjemy podziaล‚u path.split funkcja na zmiennej ลบrรณdล‚owej
  • Kod po wykonaniu wypisuje โ€žNazwa pliku"I"ล›cieลผka pliku" osobno

Krok 2) Utwรณrz kopiฤ™ naszego istniejฤ…cego pliku za pomocฤ… moduล‚u Shutil
Do utworzenia kopii istniejฤ…cego pliku uลผywamy moduล‚u Shutil. Tutaj tworzyliล›my kopiฤ™ naszego istniejฤ…cego pliku โ€žguru99.txtโ€.

Skopiuj plik do Python

Objaล›nienie kodu

  • Weลบ oryginalnฤ… nazwฤ™ pliku โ€žguru99.txtโ€ i dodaj litery .bak na koล„cu โ€žguru99.txt.bakโ€. Ta nazwa z rozszerzeniem .bak bฤ™dzie naszym duplikatem
  • Nastฤ™pnie uลผyjemy funkcji kopiowania narzฤ™dzia, aby skopiowaฤ‡ ze ลบrรณdล‚a do miejsca docelowego
  • Po uruchomieniu kodu zobaczysz zduplikowany plik z rozszerzeniem .bak po prawej stronie panelu

Krok 3) Skopiuj metadane powiฤ…zane z plikiem, uprawnienia do pliku i inne informacje
Funkcja kopiowania kopiuje tylko zawartoล›ฤ‡ pliku, ale ลผadnych innych informacji. Kopiowaฤ‡ metadane powiฤ…zane z plikiem, uprawnienia do pliku i inne informacje, ktรณrych musisz uลผyฤ‡ โ€žkopistaโ€funkcja. Zanim uruchomimy ten kod, musimy usunฤ…ฤ‡ nasz plik kopii โ€žguru99.text.bakโ€.

Skopiuj plik do Python

Po usuniฤ™ciu pliku i uruchomieniu programu utworzy siฤ™ kopia pliku .txt, ale tym razem ze wszystkimi informacjami, takimi jak uprawnienia do pliku, czas modyfikacji i informacje o metadanych. Moลผesz przejล›ฤ‡ do powล‚oki systemu operacyjnego, aby zweryfikowaฤ‡ informacje.

Skopiuj plik do Python

Oto kod

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

Krok 4) Zdobฤ…dลบ informacje
Moลผesz pobraฤ‡ informacjฤ™ o ostatniej modyfikacji pliku tekstowego

Skopiuj plik do Python

  • Wiersz kodu nr 15 โ€” podaje dzieล„, datฤ™, miesiฤ…c, rok i godzinฤ™ ostatniej modyfikacji pliku .txt (guru99). Uลผywamy moduล‚u ล›cieลผki, aby uzyskaฤ‡ szczegรณล‚y dotyczฤ…ce czasu modyfikacji pliku, a nastฤ™pnie uลผyjemy klasy czasu c funkcja czasu aby przekonwertowaฤ‡ to na czytelny czas. Wiฤ™c kiedy uruchomimy kod, moลผemy zobaczyฤ‡, ลผe plik guru99.txt zostaล‚ ostatnio zmodyfikowany pon., 8 styczniath o 13:35 2018.
  • Linia kodu nr 17 โ€” robi to samo, podajฤ…c informacje o modyfikacji pliku, ale ma inny format, aby to przedstawiฤ‡. Tutaj uลผywamy Pobierz funkcjฤ™ Czas modyfikacji (ล›cieลผka.getmtime(โ€œguru99.txtโ€)). Teraz zamiast uลผywaฤ‡ funkcji czasu c, ktรณrej uลผyjemy Z funkcji znacznika czasu i zamierzam skonstruowaฤ‡ obiekt daty i godziny. Na wyjล›ciu widaฤ‡, ลผe szczegรณล‚y czasu modyfikacji pliku sฤ… drukowane w innym formacie 2018-01-08, 13:35:51.334072

Oto kod

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

Podsumowanie

  • Aby utworzyฤ‡ kopiฤ™ istniejฤ…cego pliku, uลผyj kodu Shutil.copy (src, dst)
  • Aby skopiowaฤ‡ wszystkie informacje z oryginalnego pliku do zduplikowanego pliku uprawnienia do pliku, czas modyfikacji lub informacje o metadanych uลผywajฤ…c kodu Shutil.copystat(src,dst)

Podsumuj ten post nastฤ™pujฤ…co: