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

โšก Inteligentne podsumowanie

Python Kopiuje pliki za pomocฤ… moduล‚u shutil. Funkcja shutil.copy() duplikuje zawartoล›ฤ‡ pliku, a shutil.copystat() kopiuje rรณwnieลผ uprawnienia, czas modyfikacji i metadane. Tutaj poznasz obie metody na przykล‚adzie krok po kroku.

  • ๐Ÿ“‹ shutil.copy(): shutil.copy(src, dst) kopiuje zawartoล›ฤ‡ pliku do nowego miejsca docelowego.
  • ๐Ÿ—‚๏ธ. shutil.copystat(): shutil.copystat(src, dst) kopiuje rรณwnieลผ uprawnienia, czas i metadane.
  • ๐Ÿค– Pomoc AI: Narzฤ™dzia AI, takie jak Copilot, natychmiast generujฤ… kod kopii zapasowej.

Skopiuj plik do Python

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

Code Wyjaล›nienie

  • 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
  • Code po wykonaniu drukuje โ€ž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

Code Wyjaล›nienie

  • 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

  • Code Wiersz nr 15 โ€“ Zawiera dzieล„, datฤ™, miesiฤ…c, rok i godzinฤ™ ostatniej modyfikacji pliku .txt (guru99). Uลผywamy moduล‚u ล›cieลผki, aby uzyskaฤ‡ szczegรณล‚owe informacje o czasie 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.
  • Code Wiersz nr 17 โ€“ Wykonuje to samo, podajฤ…c informacje o modyfikacji pliku, ale ma inny format ich reprezentacji. 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()

FAQ

Zaimportuj shutil, a nastฤ™pnie wywoล‚aj shutil.copy(src, dst), aby skopiowaฤ‡ zawartoล›ฤ‡ pliku. Uลผyj shutil.copystat(), aby skopiowaฤ‡ rรณwnieลผ jego metadane.

shutil.copystat(src, dst) kopiuje uprawnienia pliku, czas modyfikacji i metadane do miejsca docelowego, ale nie jego zawartoล›ฤ‡.

Funkcja shutil.copy() kopiuje zawartoล›ฤ‡ i uprawnienia, a shutil.copy2() zachowuje rรณwnieลผ metadane, takie jak znaczniki czasu. Uลผyj copy2(), aby zachowaฤ‡ czas modyfikacji.

shutil.copy() akceptuje katalog docelowy i kopiuje uprawnienia; shutil.copyfile() wymaga peล‚nej ล›cieลผki do pliku i kopiuje tylko zawartoล›ฤ‡.

Uลผyj shutil.copytree(src, dst), aby rekurencyjnie skopiowaฤ‡ caล‚y katalog i jego zawartoล›ฤ‡. Folder docelowy nie moลผe juลผ istnieฤ‡.

Asystenci AI, tacy jak GitHub Copilot, automatycznie uzupeล‚niajฤ… wywoล‚ania shutil.copy() i copystat() i sugerujฤ… copy2() lub copytree() w danym przypadku.

Tak. Narzฤ™dzia oparte na sztucznej inteligencji generujฤ… procedury tworzenia kopii zapasowych, wybierajฤ… odpowiedniฤ… metodฤ™ zamykania i dodajฤ… kontrole istnienia przed kopiowaniem plikรณw lub folderรณw.

Uลผyj os.path.getmtime(path), aby uzyskaฤ‡ znacznik czasu, a nastฤ™pnie przekonwertuj go za pomocฤ… time.ctime() lub datetime.fromtimestamp(), aby uzyskaฤ‡ czytelnฤ… datฤ™.

Podsumuj ten post nastฤ™pujฤ…co: