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 โ
- Deklarowanie zmiennej
- Stosowanie funkcji podziaลu na zmiennej
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.splitfunkcja 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โ.
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โ.
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.
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
-
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)





