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 .