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)
Wcześniej: project/ jest pustym projektem.
project/ (po)
data/
users/
Po Path( data/users"). mkdir(parents=True, exist_ok=True): Oba foldery zostały utworzone podczas jednego połączenia.
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'
Co widać na ekranie

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
Otwórz praktykę →