如何在python中find文件或目录的所有者

我需要Python中的函数或方法来查找文件或目录的所有者。

该function应该是这样的:

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

Solutions Collecting From Web of "如何在python中find文件或目录的所有者"

我不是一个真正的蟒蛇,但是我能够鞭策这个:

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

你想使用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) 

使用示例获取所有者的UID:

 from os import stat stat(my_filename).st_uid 

但是请注意, stat返回用户标识号(例如,0代表根),而不是实际的用户名。

请参阅os.stat 。 它给你st_uid这是所有者的用户ID。 那么你必须将其转换为名称。 要做到这一点,请使用pwd.getpwuid 。

下面是一些示例代码,展示了如何找到文件的所有者:

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

我最近偶然发现了这个问题,希望得到所有者用户和组的信息,所以我想我会分享我的想法:

 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 )