Rozdział 15 · Python i akta
Foldery: exists(), is_file(), mkdir()
Zanim zaczniesz pracować ze ścieżką, często musisz zrozumieć, co jest przed tobą i utworzyć brakujące foldery.
Sprawdzamy, co mamy przed sobą
exists_is_file_is_dir.py
from pathlib import Path
p = Path("data")
print(p.exists()) # czy w ogóle istnieje jakaś ścieżka
print(p.is_file()) # to zwykły plik?
print(p.is_dir()) # czy to jest folder?
Trzy wyniki walidacji ścieżek
exists() → False
→
ścieżka nie istnieje
exists() → True, is_file() → True
→
zwykłym plikiem
exists() → True, is_dir() → True
→
folder
exists() nie gwarantuje przyszłości
Między kontrolami
if path.exists(): i kolejnej operacji system plików może się zmienić — plik może zostać usunięty przez inny proces, a uprawnienia mogą się różnić. Kontrola istnienia jest przydatna dla logiki programu, ale nie dowodzi, że następna operacja koniecznie zakończy się niepowodzeniem (wrócimy do tego w sekcji 15.22).Tworzenie folderów
mkdir_prostoj.py
from pathlib import Path
Path("data").mkdir()
mkdir_nadezhny.py
from pathlib import Path
Path("data/users").mkdir(parents=True, exist_ok=True)
# parents=True — utwórz wszystkie pośrednie foldery, jeśli jeszcze nie istnieją
# exist_ok=True — nie uważać za błąd, jeśli folder już istnieje
project/ (wcześniej)
project/ (po)
data/
users/
Debug Lab 10: Pisanie do nieistniejącego folderu
propushena_papka.py
from pathlib import Path
path = Path("data/users/anna.json")
path.write_text("{}", encoding="utf-8") # foldery data/users jeszcze nie ma!
Traceback (most recent call last):
FileNotFoundError: [Errno 2] No such file or directory: 'data/users/anna.json'
Plik można utworzyć tylko w folderze, który już istnieje. write_text()/open(..., "w") tworzą plik, ale nie tworzą brakujących folderów nadrzędnych automatycznie.
Poprawiony kod
papka_zagotovlena.py
from pathlib import Path
path = Path("data/users/anna.json")
path.parent.mkdir(parents=True, exist_ok=True) # Najpierw foldery
path.write_text("{}", encoding="utf-8") # potem — plik
Praktyka: exists(), is_file(), mkdir()
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji