GNU/Linux >> Znalost Linux >  >> Linux

jak najít vlastníka souboru nebo adresáře v pythonu

Chcete použít os.stat() :

os.stat(path)
 Perform the equivalent of a stat() system call on the given path. 
 (This function follows symlinks; to stat a symlink use lstat().)

The return value is an object whose attributes correspond to the 
members of the stat structure, namely:

- st_mode - protection bits,
- st_ino - inode number,
- st_dev - device,
- st_nlink - number of hard links,
- st_uid - user id of owner,
- st_gid - group id of owner,
- st_size - size of file, in bytes,
- st_atime - time of most recent access,
- st_mtime - time of most recent content modification,
- st_ctime - platform dependent; time of most recent metadata 
             change on Unix, or the time of creation on Windows)

Příklad použití k získání UID vlastníka:

from os import stat
stat(my_filename).st_uid

Všimněte si však, že stat vrátí číslo ID uživatele (například 0 pro uživatele root), nikoli skutečné uživatelské jméno.


Je to stará otázka, ale pro ty, kteří hledají jednodušší řešení s Pythonem 3.

Můžete také použít Path od pathlib Chcete-li tento problém vyřešit, zavolejte Path 's owner a group metoda, jako je tato:

from pathlib import Path

path = Path("/path/to/your/file")
owner = path.owner()
group = path.group()
print(f"{path.name} is owned by {owner}:{group}")

Takže v tomto případě by metoda mohla být následující:

from typing import Union
from pathlib import Path

def find_owner(path: Union[str, Path]) -> str:
    path = Path(path)
    return f"{path.owner()}:{path.group()}"

Nejsem moc krajt, ale dokázal jsem to vybičovat:

from os import stat
from pwd import getpwuid

def find_owner(filename):
    return getpwuid(stat(filename).st_uid).pw_name

Nedávno jsem na to narazil, když jsem chtěl získat vlastníka uživatele a skupinu informace, tak jsem si řekl, že se podělím o to, na co jsem přišel:

import os
from pwd import getpwuid
from grp import getgrgid

def get_file_ownership(filename):
    return (
        getpwuid(os.stat(filename).st_uid).pw_name,
        getgrgid(os.stat(filename).st_gid).gr_name
    )

Linux
  1. Jak přidat soubor .so do java.library.path v Linuxu

  2. Jak získám absolutní adresář souboru v bash?

  3. Jak mohu najít nejstarší soubor ve stromu adresářů

  1. Jak najít nejstarší soubor ve stromu adresářů v Linuxu

  2. Jak zajistím, aby hledání vyloučilo složku, ve které hledá?

  3. Jak najít soubor .pid pro daný proces

  1. Jak najít vlastníka a skupinu adresáře?

  2. Najděte adresu URL souboru

  3. Jak implementovat readlink k nalezení cesty