Path.exists(), is_file(), is_dir() și celelalte verificări în Python

Căi (pathlib) Python 3.4+ (is_junction: 3.12+, follow_symlinks: 3.12+/3.13+)

Verifică dacă o cale există și ce tip de element este.

Sintaxă
p.exists(), p.is_file(), p.is_dir(), p.is_symlink(), p.is_mount()
p.is_fifo(), p.is_socket(), p.is_block_device(), p.is_char_device(), p.is_junction()

Ce face Path.exists(), is_file(), is_dir() și celelalte verificări

exists(), is_file() și is_dir() sunt verificările de zi cu zi. is_symlink() verifică legăturile simbolice, iar is_mount() punctele de montare. Din Python 3.12/3.13, exists, is_file și is_dir acceptă follow_symlinks=False.

Verificările speciale de Unix: is_fifo() (canal cu nume), is_socket() (socket Unix), is_block_device() (disc, ca /dev/sda), is_char_device() (dispozitiv caracter, ca /dev/null). is_junction() are sens doar pe Windows. Pentru căi inexistente, toate returnează False.

Ce returnează

True sau False.

Exemple

Exemplul 1: Verificări uzuale

from pathlib import Path
Path("poze").mkdir(exist_ok=True)
Path("cv.pdf").touch()
Path("link_cv").symlink_to("cv.pdf")
for p in [Path("poze"), Path("cv.pdf"), Path("link_cv"), Path("lipsa")]:
    print(p, p.exists(), p.is_file(), p.is_dir(), p.is_symlink())
print(Path("/").is_mount(), Path("poze").is_junction())

Rezultat

poze True False True False
cv.pdf True True False False
link_cv True True False True
lipsa False False False False
True False

Exemplul 2: Tipuri speciale de fișiere (Unix)

import os, socket
from pathlib import Path
os.mkfifo("canal")
s = socket.socket(socket.AF_UNIX)
s.bind("server.sock")
print(Path("canal").is_fifo(), Path("server.sock").is_socket())
print(Path("/dev/null").is_char_device(), Path("/dev/null").is_block_device())
s.close()

Rezultat

True True
True False

Greșeli frecvente

  • Apelezi p.exists fără paranteze: obții metoda, care este mereu adevărată într-un if.

Comenzi înrudite