GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie finde ich den Besitzer einer Datei oder eines Verzeichnisses in Python?

Sie möchten os.stat() verwenden :

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)

Beispiel für die Verwendung zum Abrufen der Besitzer-UID:

from os import stat
stat(my_filename).st_uid

Beachten Sie jedoch, dass stat gibt die Benutzer-ID-Nummer zurück (z. B. 0 für root), nicht den tatsächlichen Benutzernamen.


Es ist eine alte Frage, aber für diejenigen, die mit Python 3 nach einer einfacheren Lösung suchen.

Sie können auch Path verwenden ab pathlib Um dieses Problem zu lösen, rufen Sie Path auf ist owner und group Methode wie folgt:

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}")

In diesem Fall könnte die Methode also wie folgt aussehen:

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()}"

Ich bin nicht wirklich ein Python-Typ, aber ich konnte das hier aufpeppen:

from os import stat
from pwd import getpwuid

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

Ich bin vor Kurzem darüber gestolpert, als ich nach Besitzerbenutzern und Gruppen suchte Informationen, also dachte ich, ich würde teilen, was ich mir ausgedacht habe:

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. So fügen Sie eine .so-Datei zum java.library.path in Linux hinzu

  2. Wie erhalte ich das absolute Verzeichnis einer Datei in Bash?

  3. Wie finde ich die älteste Datei in einem Verzeichnisbaum?

  4. Wie kann ich den Ordner, in dem gesucht wird, von find ausschließen?

  5. Wie entferne ich alle Symlinks unter dem Verzeichnis?

So ermitteln Sie die Gesamtgröße eines Verzeichnisses in Linux

Wie finde ich den my.cnf-Speicherort von MySQL?

So erhalten Sie die Größe von tar.gz in (MB) Datei in Python

Wie finde ich den Standard-Dateimanager?

So kombinieren Sie den Befehl „tar“ mit „find“

So finden Sie die .pid-Datei für einen bestimmten Prozess