comment trouver le propriétaire d'un fichier ou d'un répertoire en python

j'ai besoin d'une fonction ou d'une méthode en Python pour trouver le propriétaire d'un fichier ou d'un répertoire.

la fonction doit ressembler à:

>>> find_owner("/home/somedir/somefile")
owner3
20
demandé sur Lev Levitsky 2009-12-02 07:19:36

5 réponses

Je ne suis pas vraiment un gars de python, mais j'ai pu le faire:

from os import stat
from pwd import getpwuid

def find_owner(filename):
    return getpwuid(stat(filename).st_uid).pw_name
50
répondu asveikau 2013-10-21 21:25:42

vous voulez utiliser 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)

Exemple d'utilisation pour obtenir le propriétaire UID:

from os import stat
stat(my_filename).st_uid

Notez, cependant, que stat renvoie le numéro d'utilisateur (par exemple, 0 pour root), pas le nom d'utilisateur réel.

15
répondu Kurt 2013-07-11 07:50:03

Voir os.stat. Il vous donne st_uid qui est le code d'utilisateur du propriétaire. Alors vous devez le convertir au nom. Pour ce faire, utilisez pwd.getpwuid.

3
répondu Craig McQueen 2009-12-02 04:26:06

Voici un exemple de code montrant comment vous pouvez trouver le propriétaire d'un fichier:

#!/usr/bin/env python
import os
import pwd
filename = '/etc/passwd'
st = os.stat(filename)
uid = st.st_uid
print(uid)
# output: 0
userinfo = pwd.getpwuid(st.st_uid)
print(userinfo)
# output: pwd.struct_passwd(pw_name='root', pw_passwd='x', pw_uid=0, 
#          pw_gid=0, pw_gecos='root', pw_dir='/root', pw_shell='/bin/bash')
ownername = pwd.getpwuid(st.st_uid).pw_name
print(ownername)
# output: root
3
répondu unutbu 2013-07-11 07:52:14

je suis tombé sur ce récemment, cherchant à obtenir propriétaire Utilisateur et le groupe information, donc j'ai pensé que je devais partager ce que j'ai trouvé:

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
    )
2
répondu Will 2016-08-06 01:51:35