目录:
pwd 模块在 Windows 系统上不可用,专门用于访问 Unix 及类 Unix 系统(如 Linux 和 macOS)中用户账户和密码数据库。提供了一种便捷的编程接口来读取 /etc/passwd 文件中的信息,从而获取用户的关键身份信息。
通过用户的数字 ID (UID) 来查询用户信息。如果找不到对应的 UID,会抛出 KeyError 异常。
os 模块的 getuid() 方法可以获取当前用户的 UID。
import os
import pwd
# 获取当前用户的UID
current_uid = os.getuid()
# 通过UID查询用户信息
user_info = pwd.getpwuid(current_uid)
print(f"用户名: {user_info.pw_name}")
print(f"用户ID: {user_info.pw_uid}")
print(f"组ID: {user_info.pw_gid}")
print(f"全名: {user_info.pw_gecos}")
print(f"主目录: {user_info.pw_dir}")
print(f"登录Shell: {user_info.pw_shell}")
通过用户的登录名来查询用户信息。同样,如果用户名不存在,会抛出 KeyError 异常。
import pwd
username = 'dkvirus' # 可以替换为任何存在的用户名
try:
user_info = pwd.getpwnam(username)
print(f"用户名: {user_info.pw_name}")
print(f"用户ID: {user_info.pw_uid}")
# ... 输出其他属性
except KeyError:
print(f"用户 '{username}' 不存在。")
返回一个包含系统中所有用户信息的列表,列表中的每一项都是一个 struct_passwd 对象。返回的顺序是不固定的。
struct_passwd 对象包含以下属性,分别对应 /etc/passwd 文件中的字段。
import pwd
all_users = pwd.getpwall()
for user in all_users:
print(f"用户名: {user.pw_name:10} UID: {user.pw_uid:4} 主目录: {user.pw_dir}")
输入 UID,返回用户名;或者输入用户名,返回 UID。
import pwd
def uid_to_uname(identifier):
"""将用户ID或用户名转换为另一项。"""
if isinstance(identifier, int) or identifier.isdigit():
# 如果输入是数字,视为UID
return pwd.getpwuid(int(identifier)).pw_name
else:
# 否则视为用户名
return pwd.getpwnam(identifier).pw_uid
# 测试
print(uid_to_uname(0)) # 输出: root
print(uid_to_uname("root")) # 输出: 0
↶ 返回首页 ↶