Metody kopiowania plików w języku Python
Python zapewnia wbudowane funkcje do łatwego kopiowania plików za pomocą narzędzi powłoki systemu operacyjnego.
Następujące polecenie służy do kopiowania pliku
shutil.copy(src,dst)
Poniższe polecenie służy do kopiowania pliku z informacjami o metadanych
shutil.copystat(src,dst)
Oto kroki, aby skopiować plik w Pythonie
Krok 1) 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ż utworzyliśmy wcześniej plik guru99.txt, wiemy, że istnieje i będziemy kontynuować pracę nad kodem
- Przechowujemy ścieżkę do pliku w zmiennej „ src ”, jeśli plik istnieje
- Gdy otrzymamy ścieżkę, rozdzielimy ścieżkę i nazwę pliku
- W tym celu użyjemy
path.split
funkcji podziału na zmiennej źródłowej - Kod po wykonaniu wypisuje oddzielnie " nazwę pliku " i " ścieżkę do pliku "
Krok 2) Używamy modułu Shutil do tworzenia kopii istniejącego pliku. Tutaj utworzyliś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 naszą duplikatem
- Następnie użyjemy funkcji kopiowania narzędzia, aby skopiować ze źródła do miejsca docelowego
- Po uruchomieniu kodu po prawej stronie panelu zostanie utworzony zduplikowany plik z rozszerzeniem .bak
Krok 3) Funkcja kopiowania kopiuje tylko zawartość pliku, ale żadnych innych informacji. Aby skopiować metadane powiązane z plikiem, uprawnienia do pliku i inne informacje, musisz użyć funkcji „ copystat ”. Zanim uruchomimy ten kod, musimy usunąć nasz plik kopii „guru99.text.bak”.
Po usunięciu pliku i uruchomieniu programu utworzy on kopię 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 osimport shutilfrom os import pathdef main():# make a duplicate of an existing fileif path.exists("guru99.txt"):# get the path to the file in the current directorysrc = path.realpath("guru99.txt");#seperate the path from the filterhead, tail = path.split(src)print("path: +head)print("file: +tail)#let's make a backup copy by appending "bak" to the namedst = src+".bak"# nowuse the shell to make a copy of the fileshutil.copy(src, dst)#copy over the permissions,modificationshutil.copystat(src,dst)if __name__=="__main__":main()
Krok 4) Możesz pobrać informacje o ostatnio zmodyfikowanym pliku tekstowym
- Code Line # 15 - podaje dzień, datę, miesiąc, rok i czas ostatniej modyfikacji pliku .txt (guru99). Używamy modułu ścieżki, aby uzyskać szczegóły dotyczące czasu modyfikacji pliku, a następnie zamierzamy użyć funkcji czasu klas czasowych c, aby przekonwertować ją na czytelny czas. Kiedy więc uruchomić kod, możemy zobaczyć guru99.txt plik został ostatnio zmodyfikowano Mon, sty 8 th na 13:35 2018.
- Code Line # 17 - robi to samo, podając informacje o modyfikacji pliku, ale ma inny format, który to reprezentuje. Tutaj używamy funkcji Get Modification Time (path.getmtime ("guru99.txt")). Teraz zamiast korzystać z funkcji czasu c, użyjemy funkcji From Time Stamp i skonstruujemy 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 moduleimport osfrom os import pathimport datetimefrom datetime import date, time, timedeltaimport timedef main():# Get the modification timet = 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 za pomocą kodu shutil.copy (src, dst)
- Aby skopiować wszystkie informacje z oryginalnego pliku w celu zduplikowania pliku, takie jak uprawnienia do pliku, czas modyfikacji lub informacje o metadanych, za pomocą kodu shutil.copystat (src, dst)