📒 

Zaawansowany przewodnik po usuwaniu plików i katalogów w Pythonie

W Pythonie obsługa plików i katalogów jest powszechnym zadaniem, szczególnie w aplikacjach wymagających manipulacji plikami. Niniejszy przewodnik skupia się na zaawansowanych technikach usuwania plików i katalogów przy użyciu różnych modułów Pythona, w tym os, shutil i pathlib. Każdy z tych modułów zapewnia różne funkcje dla operacji systemu plików, pozwalając na efektywne zarządzanie plikami i katalogami. Aby pobrać Pythona, przejdź do poniższego linku z oficjalnego źródła python.org.

Zrozumienie modułów

1. Moduł os

Moduł os zapewnia sposób korzystania z funkcji zależnych od systemu operacyjnego, takich jak odczyt lub zapis w systemie plików. Zawiera funkcje usuwania plików i katalogów. Korzystanie z modułu os w środowisku hostingu Linux VPS zapewnia wydajną kontrolę nad zarządzaniem plikami i innymi operacjami na poziomie systemu. Moduł ten umożliwia programistom wykonywanie czynności takich jak odczytywanie, zapisywanie i usuwanie plików i katalogów bezpośrednio na serwerze

Kluczowe funkcje:

  • os.remove(path): Usuwa (kasuje) ścieżkę pliku.
  • os.rmdir(path): Usuwa ścieżkę katalogu. Katalog musi być pusty.
  • os.unlink(path): Inna nazwa dla os.remove(), używana do usuwania pliku.

2. Moduł shutil

Moduł shutil oferuje interfejs wyższego poziomu dla operacji na plikach. Jest on szczególnie przydatny do kopiowania i usuwania katalogów i plików.

Kluczowe funkcje:

  • shutil.rmtree(path): Rekursywnie usuwa katalog i całą jego zawartość, w tym podkatalogi i pliki.
  • shutil.move(src, dst): Przenosi plik lub katalog do innej lokalizacji, co może być również użyte do usunięcia plików poprzez przeniesienie ich do nieistniejącego katalogu.

3. Moduł pathlib

Moduł pathlib zapewnia obiektowe podejście do obsługi ścieżek systemu plików. Moduł ten został wprowadzony w Pythonie 3.4 i jest uważany za bardziej intuicyjny i czytelny.

Kluczowe funkcje:

  • Path.unlink(): Usuwa plik.
  • Path.rmdir(): Usuwa pusty katalog.
  • Path.rmtree(): Aby usunąć katalog i jego zawartość, zwykle używa się shutil.rmtree() w połączeniu z Path.

Zaawansowane techniki usuwania plików i katalogów

Korzystanie z modułu os

Oto jak używać modułu os do usuwania plików i katalogów:

Opcja A: Uruchamianie w interaktywnym Pythonie

  1. Otwórz interaktywną sesję Pythona wpisując:
    python3

    (użyj python, jeśli tak jest skonfigurowany Python w twoim systemie, ale ogólnie python3 jest zalecanym poleceniem dla Pythona 3.x).

  2. Skopiuj i wklej kod bezpośrednio do sesji interaktywnej (skrypt poniżej)

opcja B: Zapisywanie do pliku skryptu Pythona

  1. Utwórz nowy plik za pomocą edytora tekstu, takiego jak nano:
    nano remove_file.py
  2. Skopiuj i wklej następujący kod do pliku (skrypt poniżej)
  3. Teraz możesz uruchomić skrypt Pythona z terminala:
    python3 remove_file.py

Usuwanie pojedynczego pliku

import os
file_path = 'example.txt'
try:
os.remove(file_path)
print(f'Pomyślnie usunięto {file_path}')
except FileNotFoundError:
print(f'Plik {file_path} nie istnieje')
except PermissionError:
print(f'Permission denied: unable to delete {file_path}')
except Exception as e:
print(f'Wystąpił błąd: {e}')

Wynik:

Usuwanie pustego katalogu

Krok 1: Utwórz katalog

Najpierw utwórz pusty katalog o nazwie example_dir. Można to zrobić za pomocą następującego polecenia:

mkdir example_dir

Krok 2: Utworzenie skryptu Python

Teraz musisz utworzyć skrypt Pythona, który zawiera kod do usuwania pustego katalogu. Do utworzenia skryptu można użyć edytora tekstu, takiego jak nano.

  1. Otwórz nano, aby utworzyć nowy plik Pythona:
    nano remove_directory.py
  2. Skopiuj i wklej następujący kod do pliku (kod poniżej)
  3. Teraz uruchom utworzony skrypt Pythona:
    python3 remove_directory.py

import os
directory_path = 'example_dir'
try:
os.rmdir(directory_path)

f'Pomyślnie usunięto katalog {directory_path}')
except FileNotFoundError:
print(f'Katalog {directory_path} nie istnieje')
except OSError:
print(f'Katalog {katalog_path} nie jest pusty')
except Exception as e:
print(f'Wystąpił błąd: {e}')

Wyjście:

Korzystanie z modułu shutil

Krok 1: Utwórz katalog z zawartością

Najpierw utwórz katalog o nazwie example_dir_with_content i dodaj do niego kilka plików. Można to zrobić za pomocą następujących poleceń:

mkdir example_dir_with_content
touch example_dir_with_content/file1.txt
touch example_dir_with_content/file2.txt

Krok 2: Utwórz skrypt Pythona

Teraz musisz utworzyć skrypt Pythona, który zawiera kod do usunięcia katalogu i jego zawartości. Do utworzenia skryptu można użyć edytora tekstu, takiego jak nano.

  1. Otwórz nano, aby utworzyć nowy plik Pythona:
    nano remove_directory_content.py
  2. Skopiuj i wklej następujący kod do pliku (kod poniżej)
  3. Teraz uruchom utworzony skrypt Pythona:
    python3 remove_directory_content.py

Aby usunąć katalogi z zawartością, użyj shutil.rmtree():

import shutil
'example_dir_with_content'
try:
shutil.rmtree(directory_path)
print(f'Pomyślnie usunięto katalog {directory_path} i jego zawartość')
except FileNotFoundError:
print(f'Katalog {directory_path} nie istnieje')
except PermissionError:
print(f'Permission denied: unable to delete {directory_path}')
except Exception as e:
print(f'Wystąpił błąd: {e}')

Wyjście:

Korzystanie z modułu pathlib

pathlib zapewnia nowoczesny interfejs dla ścieżek systemu plików:

Usuwanie pliku

from pathlib import Path
file_path = Path('example.txt')
try:
file_path.unlink()
print(f'Pomyślnie usunięto {file_path}')
except FileNotFoundError:
print(f'Plik {file_path} nie istnieje')
except PermissionError:
print(f'Permission denied: unable to delete {file_path}')
except Exception as e:
print(f'Wystąpił błąd: {e}')

Wyjście:

Usuwanie pustego katalogu

from pathlib import Pathdirectory_path = Path('example_dir'
try:
directory_path.rmdir() # To zadziała tylko wtedy, gdy katalog jest pusty
print(f'Pomyślnie usunięto katalog {directory_path}')
except FileNotFoundError:
print(f'Katalog {directory_path} nie istnieje')
except OSError:
print(f'Katalog {katalog_path} nie jest pusty')
except Exception as e:
print(f'Wystąpił błąd: {e}')

Wyjście:

Łaskawa obsługa błędów

Podczas pracy z operacjami na plikach ważne jest, aby z wdziękiem obsługiwać wyjątki, aby zapobiec awarii programu. Typowe wyjątki obejmują:

  • FileNotFoundError: Zgłaszany podczas próby usunięcia nieistniejącego pliku lub katalogu.
  • PermissionError: Zgłaszany, gdy użytkownik nie ma uprawnień niezbędnych do usunięcia pliku lub katalogu.
  • OSError: Zgłaszany w przypadku różnych błędów związanych z systemem operacyjnym, w tym próby usunięcia niepustego katalogu.

Wnioski

W tym przewodniku zbadaliśmy, jak używać modułów Pythona, takich jak os, shutil i pathlib do usuwania plików i katalogów. Każdy moduł oferuje unikalne zalety, a zrozumienie, jak efektywnie z nich korzystać, zwiększy możliwości zarządzania systemami plików w aplikacjach. Opanowując te techniki, można zautomatyzować zadania zarządzania plikami, obsługiwać pliki bardziej intuicyjnie i pisać solidne skrypty, które współdziałają z systemem plików.