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