Python:查找给定用户名/组名的uid/gid(用于os.chown)
有没有什么好的方法可以用Python找到某个用户名或组名对应的uid(用户ID)和gid(组ID)?我需要用os.chown来设置文件的拥有者,而不是用字母形式的名字,而是需要这些数字ID。
[快速说明]:getpwnam这个函数很好用,但在Windows上不可用,所以这里有一些代码可以创建一些替代方案,让你在Windows和Unix系统上都能运行相同的代码。
try:
from pwd import getpwnam
except:
getpwnam = lambda x: (0,0,0)
os.chown = lambda x, y, z: True
os.chmod = lambda x, y: True
os.fchown = os.chown
os.fchmod = os.chmod
2 个回答
3
试着帮助大家更清楚地理解之前的例子。
使用 pwd
和 grp
这两个模块。
from pwd import getpwnam
from grp import getgrnam
在你的代码中,如果需要提取 name
和 group
的 UID(用户ID),可以使用以下内容。
注意:
user_name
和group_name
是占位符。请用你实际想要的名字替换它们。
getpwnam('user_name').pw_uid # Returns UID only
getgrnam('group_name').gr_gid # Returns GID only
注意:
getgrnam
会返回一个叫做grp.struct_group
的类,而getpwnam
会返回一个叫做pwd.struct_passwd
的类。正如之前提到的,你可以通过索引(比如getpwnam('user_name')[2]
)或者通过点号表示法来访问这些结构中的ID,就像上面的例子所示。