Tôi cần một hàm hoặc phương thức trong Python để tìm chủ sở hữu tệp hoặc thư mục.cách tìm chủ sở hữu tệp hoặc thư mục trong python
Chức năng nên được như thế:
>>> find_owner("/home/somedir/somefile")
owner3
Tôi cần một hàm hoặc phương thức trong Python để tìm chủ sở hữu tệp hoặc thư mục.cách tìm chủ sở hữu tệp hoặc thư mục trong python
Chức năng nên được như thế:
>>> find_owner("/home/somedir/somefile")
owner3
Tôi không thực sự nhiều của một anh chàng trăn, nhưng tôi đã có thể để whip này lên:
from os import stat
from pwd import getpwuid
def find_owner(filename):
return getpwuid(stat(filename).st_uid).pw_name
Bạn muốn sử dụng 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)
Ví dụ về việc sử dụng để có được chủ sở hữu UID:
from os import stat
stat(my_filename).st_uid
Lưu ý, tuy nhiên, stat
trả về số id người dùng (ví dụ: 0 cho thư mục gốc), không phải tên người dùng thực tế.
Xem os.stat. Nó cung cấp cho bạn st_uid
là ID người dùng của chủ sở hữu. Sau đó, bạn phải chuyển đổi nó thành tên. Để làm điều đó, hãy sử dụng pwd.getpwuid.
Dưới đây là một số mã ví dụ, cho thấy làm thế nào bạn có thể tìm thấy chủ sở hữu của tập tin:
#!/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
tôi stumbled trên này thời gian gần đây, tìm kiếm để có được chủ sở hữu sử dụng và nhóm thông tin, vì vậy tôi nghĩ rằng tôi muốn chia sẻ những gì tôi đã đưa ra:
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
)