Necesito una función o método en Python para encontrar el propietario de un archivo o directorio.cómo encontrar el propietario de un archivo o directorio en python
La función debe ser como:
>>> find_owner("/home/somedir/somefile")
owner3
Necesito una función o método en Python para encontrar el propietario de un archivo o directorio.cómo encontrar el propietario de un archivo o directorio en python
La función debe ser como:
>>> find_owner("/home/somedir/somefile")
owner3
No estoy realmente mucho de un tipo pitón, pero yo era capaz de batir esto:
from os import stat
from pwd import getpwuid
def find_owner(filename):
return getpwuid(stat(filename).st_uid).pw_name
Desea utilizar 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 dueño del UID:
from os import stat
stat(my_filename).st_uid
Tenga en cuenta, sin embargo, que stat
devuelve el número de identificación de usuario (por ejemplo, 0 para raíz), no el nombre de usuario real.
Ver os.stat. Le da st_uid
que es la identificación de usuario del propietario. Entonces debes convertirlo al nombre. Para hacer eso, use pwd.getpwuid.
Aquí es un código de ejemplo, mostrando cómo se puede encontrar al dueño 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 encontré con este recientemente, que buscan obtener usuario propietario y grupo, así que pensé en compartir lo que 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
)