Come posso ottenere il proprietario e gli ID di gruppo di una directory usando Python su Linux?Come ottenere il proprietario e il gruppo di una cartella con Python su una macchina Linux?
risposta
Utilizzare os.stat()
per ottenere l'uid e il gid del file. Quindi, utilizzare pwd.getpwuid()
e grp.getgrgid()
per ottenere rispettivamente i nomi degli utenti e dei gruppi.
import grp
import pwd
import os
stat_info = os.stat('/path')
uid = stat_info.st_uid
gid = stat_info.st_gid
print uid, gid
user = pwd.getpwuid(uid)[0]
group = grp.getgrgid(gid)[0]
print user, group
Io tendo ad usare os.stat:
Eseguire una chiamata di sistema stat sul percorso indicato. Il valore di ritorno è un oggetto i cui attributi corrispondono ai membri della struttura stat, vale a dire: st_mode (bit di protezione),
st_ino
(numero di inode),st_dev
(dispositivo),st_nlink
(numero di collegamenti rigidi),st_uid
(id utente di proprietario),st_gid
(gruppo id proprietario),st_size
(la dimensione del file, in byte),st_atime
(tempo dell'accesso più recente),st_mtime
(tempo di modifica più recente contenuto),st_ctime
(dipendente dalla piattaforma; tempo di più recente cambiamento dei metadati su Unix, o il tempo della creazione su Windows)
C'è un esempio al link per os.stat
sopra.
Utilizzare la funzione os.stat
.
Uso os.stat:
>>> s = os.stat('.')
>>> s.st_uid
1000
>>> s.st_gid
1000
st_uid
è l'ID utente del proprietario, st_gid
è l'ID di gruppo. Vedere la documentazione collegata per altre informazioni che possono essere ottenute tramite stat
.
Dal Python 3.4.4, la classe del modulo Path
pathlib
fornisce un bel sintassi per questo:
from pathlib import Path
whatever = Path("relative/or/absolute/path/to_whatever")
if whatever.exists():
print("Owner: %s" % whatever.owner())
print("Group: %s" % whatever.group())