Path.mkdir(), rmdir(), touch() și unlink() în Python

Căi (pathlib) Python 3.4+ (unlink missing_ok: 3.8+)

Creează și șterge directoare și fișiere goale.

Sintaxă
p.mkdir(mode=0o777, parents=False, exist_ok=False)
p.rmdir()
p.touch(exist_ok=True)
p.unlink(missing_ok=False)

Ce face Path.mkdir(), rmdir(), touch() și unlink()

mkdir() creează directorul. Cu parents=True creează și directoarele intermediare lipsă, iar cu exist_ok=True nu dă eroare dacă directorul există. rmdir() șterge un director gol.

touch() creează un fișier gol sau, dacă există, îi actualizează momentul modificării. unlink() șterge un fișier sau o legătură; cu missing_ok=True nu dă eroare dacă fișierul lipsește. Pentru directoare cu conținut folosește shutil.rmtree().

Parametri

Parametru Descriere
parents Creează și directoarele părinte.
exist_ok Nu dă eroare dacă există deja.
missing_ok Pentru unlink: nu dă eroare dacă lipsește.

Ce returnează

None.

Exemple

Exemplul 1: Structură de directoare

from pathlib import Path
baza = Path("proiect/src/utilitare")
baza.mkdir(parents=True, exist_ok=True)
(baza / "__init__.py").touch()
print(sorted(str(p) for p in Path("proiect").rglob("*")))
(baza / "__init__.py").unlink()
baza.rmdir()
print(baza.exists(), baza.parent.exists())
Path("nu_exista.txt").unlink(missing_ok=True)

Rezultat

['proiect/src', 'proiect/src/utilitare', 'proiect/src/utilitare/__init__.py']
False True

Exemplul 2: Erori frecvente

from pathlib import Path
Path("plin").mkdir()
(Path("plin") / "a.txt").touch()
for operatie in [lambda: Path("plin").mkdir(), lambda: Path("plin").rmdir(), lambda: Path("x/y/z").mkdir()]:
    try:
        operatie()
    except OSError as e:
        print(type(e).__name__, "-", e.strerror)

Rezultat

FileExistsError - File exists
OSError - Directory not empty
FileNotFoundError - No such file or directory

Greșeli frecvente

  • Creezi un director imbricat fără parents=True și primești FileNotFoundError.
  • Încerci rmdir() pe un director cu fișiere: OSError: Directory not empty.

Comenzi înrudite