una todos ruta recorrer nombre manejo los libreria leer escribir directorios directorio carpetas archivos archivo actual python linux file permissions ownership

todos - python directorio actual



Cómo encontrar el propietario de un archivo o directorio en Python (5)

Necesito una función o método en Python para encontrar al propietario de un archivo o directorio.

La función debe ser como:

>>> find_owner("/home/somedir/somefile") owner3


Aquí hay un código de ejemplo, que muestra cómo puede encontrar el propietario del archivo:

#!/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


Me topé con esto recientemente, buscando obtener información de usuarios y grupos de propietarios, así que pensé en compartir lo que se me ocurrió:

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 )


No soy realmente un tipo de Python, pero fui capaz de agitar esto:

from os import stat from pwd import getpwuid def find_owner(filename): return getpwuid(stat(filename).st_uid).pw_name


Quieres usar 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)

Ejemplo de uso para obtener el UID del propietario:

from os import stat stat(my_filename).st_uid

Sin embargo, stat que la stat devuelve el número de identificación de usuario (por ejemplo, 0 para la raíz), no el nombre de usuario real.


Ver os.stat . Te da st_uid que es el ID de usuario del propietario. Entonces tienes que convertirlo al nombre. Para hacer eso, usa pwd.getpwuid .