Path.stat(), lstat(), chmod(), lchmod(), owner(), group() în Python

Căi (pathlib) Python 3.4+ (follow_symlinks: 3.10+/3.13+)

Informații despre un fișier (mărime, date, permisiuni, proprietar) și schimbarea permisiunilor.

Sintaxă
p.stat(*, follow_symlinks=True)
p.lstat()
p.chmod(mod)
p.lchmod(mod)
p.owner()
p.group()

Ce face Path.stat(), lstat(), chmod(), lchmod(), owner(), group()

stat() returnează un obiect os.stat_result cu st_size (mărimea), st_mtime (ultima modificare), st_mode (tipul și permisiunile) și altele. lstat() descrie legătura simbolică însăși, nu fișierul spre care arată.

chmod(0o644) schimbă permisiunile (în notație octală), iar lchmod() le schimbă pe legătura simbolică (nu este disponibilă pe Linux). owner() și group() returnează numele utilizatorului și al grupului proprietar (doar Unix).

Parametri

Parametru Descriere
mod Pentru chmod: permisiunile, de exemplu 0o600.

Ce returnează

stat: os.stat_result. owner/group: text. chmod: None.

Exemple

Exemplul 1: Mărime și permisiuni

import stat
from pathlib import Path
p = Path("secret.key")
p.write_text("cheie")
p.chmod(0o600)
info = p.stat()
print(info.st_size, oct(info.st_mode & 0o777), stat.filemode(info.st_mode))
Path("link.key").symlink_to("secret.key")
print(stat.S_ISLNK(Path("link.key").lstat().st_mode), stat.S_ISLNK(Path("link.key").stat().st_mode))

Rezultat

5 0o600 -rw-------
True False

Exemplul 2: Proprietar și lchmod

from pathlib import Path
p = Path("raport.pdf")
p.touch()
print(p.owner(), p.group())
Path("scurt").symlink_to(p)
Path("scurt").lchmod(0o600)

Rezultat posibil (macOS; pe Linux lchmod dă NotImplementedError)

ana staff

Greșeli frecvente

  • Scrii permisiunile în zecimal: chmod(644) setează alte drepturi decât chmod(0o644). Folosește prefixul 0o.

Comenzi înrudite