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)