shutil do operacji na plikach
Kopiuj, przenoś i archiwizuj pliki
shutil do operacji na plikach to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.
Czym jest shutil?
Moduł shutil (narzędzia powłoki) udostępnia operacje na plikach wysokiego poziomu: kopiowanie, przenoszenie, usuwanie drzew katalogów i tworzenie archiwów. Rozszerza moduł os o funkcje przydatne w codziennych zadaniach.
import shutil, os
os.makedirs('/tmp/shutil_demo', exist_ok=True)
with open('/tmp/shutil_demo/a.txt', 'w') as f:
f.write('hello')
print('created a.txt')Kopiowanie pliku
shutil.copy(src, dst) kopiuje zawartość pliku oraz jego bity uprawnień do nowej lokalizacji.
import shutil, os
os.makedirs('/tmp/shutil_demo', exist_ok=True)
with open('/tmp/shutil_demo/src.txt', 'w') as f:
f.write('data')
shutil.copy('/tmp/shutil_demo/src.txt', '/tmp/shutil_demo/copy.txt')
print(os.path.exists('/tmp/shutil_demo/copy.txt'))copy a copy2
shutil.copy2 działa podobnie jak copy, ale dodatkowo zachowuje metadane, takie jak znaczniki czasu. Należy go używać, gdy istotne są czasy modyfikacji.
import shutil, os
os.makedirs('/tmp/shutil_demo', exist_ok=True)
with open('/tmp/shutil_demo/m.txt', 'w') as f:
f.write('x')
shutil.copy2('/tmp/shutil_demo/m.txt', '/tmp/shutil_demo/m2.txt')
print('copied with metadata')Kopiowanie całego drzewa
shutil.copytree(src, dst) rekurencyjnie kopiuje cały katalog. Katalog docelowy nie może już istnieć, chyba że zostanie przekazane dirs_exist_ok=True.
import shutil, os
os.makedirs('/tmp/tree_src/sub', exist_ok=True)
with open('/tmp/tree_src/sub/f.txt', 'w') as f:
f.write('hi')
shutil.rmtree('/tmp/tree_dst', ignore_errors=True)
shutil.copytree('/tmp/tree_src', '/tmp/tree_dst')
print(os.path.exists('/tmp/tree_dst/sub/f.txt'))Przenoszenie plików i folderów
shutil.move(src, dst) przenosi (lub zmienia nazwę) pliku albo katalogu. Działa między różnymi systemami plików, w przypadku których os.rename zakończyłoby się niepowodzeniem.
import shutil, os
os.makedirs('/tmp/move_demo', exist_ok=True)
with open('/tmp/move_demo/old.txt', 'w') as f:
f.write('move me')
shutil.move('/tmp/move_demo/old.txt', '/tmp/move_demo/new.txt')
print(os.path.exists('/tmp/move_demo/new.txt'))Usuwanie drzewa katalogów
shutil.rmtree(path) usuwa katalog i całą jego zawartość. Należy używać tej funkcji ostrożnie — nie można cofnąć tej operacji.
import shutil, os
os.makedirs('/tmp/to_delete/inner', exist_ok=True)
shutil.rmtree('/tmp/to_delete')
print('exists after rmtree:', os.path.exists('/tmp/to_delete'))ignore_errors i bezpieczeństwo
Przekazanie ignore_errors=True do rmtree zapobiega awarii, gdy ścieżka nie istnieje. Przydaje się to podczas czyszczenia przed świeżym uruchomieniem.
import shutil
shutil.rmtree('/tmp/never_existed', ignore_errors=True)
print('no error even though path was absent')Tworzenie archiwum
shutil.make_archive(base_name, format, root_dir) pakuje katalog do pliku zip lub tar za pomocą jednego wywołania.
import shutil, os
os.makedirs('/tmp/arch_src', exist_ok=True)
with open('/tmp/arch_src/data.txt', 'w') as f:
f.write('archive me')
path = shutil.make_archive('/tmp/my_archive', 'zip', '/tmp/arch_src')
print('created', os.path.basename(path))Rozpakowywanie archiwum
shutil.unpack_archive(filename, extract_dir) wykonuje operację odwrotną, rozpakowując plik zip lub tar do folderu.
import shutil, os
shutil.make_archive('/tmp/box', 'zip', '/tmp/arch_src')
shutil.unpack_archive('/tmp/box.zip', '/tmp/unpacked')
print(os.listdir('/tmp/unpacked'))Znajdowanie plików wykonywalnych
shutil.which(name) lokalizuje program w systemowej zmiennej PATH, podobnie jak powłokowe polecenie which. Zwraca pełną ścieżkę albo None.
import shutil
print(shutil.which('python3'))
print(shutil.which('definitely_not_a_real_program'))Wykorzystanie miejsca na dysku
shutil.disk_usage(path) zwraca informacje o całkowitej, zajętej i wolnej liczbie bajtów w systemie plików zawierającym daną ścieżkę.
import shutil
usage = shutil.disk_usage('/')
print('total GB:', round(usage.total / 1e9, 1))
print('free GB:', round(usage.free / 1e9, 1))Szybki sprawdzian
Sprawdź swoje zrozumienie modułu shutil.
Podsumowanie
Poznałeś moduł shutil do operacji na plikach:
copy/copy2kopiuje pliki, acopytreekopiuje całe drzewa katalogów.movezmienia nazwy lub przenosi elementy, armtreeusuwa drzewa katalogów.make_archive/unpack_archiveobsługuje pliki zip i tar.whichidisk_usagepobierają informacje o systemie.
Następny kurs: tworzenie narzędzi wiersza poleceń za pomocą argparse.
Często zadawane pytania
Czy lekcja „shutil do operacji na plikach” jest bezpłatna?
Tak — pełny tekst „shutil do operacji na plikach” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „shutil do operacji na plikach”?
Kopiuj, przenoś i archiwizuj pliki Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Python Academy?
Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „shutil do operacji na plikach”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?
Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Uruchamianie poleceń za pomocą subprocess
- Przechwytywanie danych wyjściowych
- Środowisko i moduł os
- shutil do operacji na plikach