python - 有没有一种干净的方法可以通过 python 检查计算机上是否存在给定用户?

标签 python operating-system pwd

目前我正在使用 pwd.getpwall(),它显示了整个密码数据库。但我只想要计算机的用户帐户。使用 getpwall() 我无法做到这一点......

if 'foo' in pwd.getpwall():
     do stuff

因为 pwd.getpwall() 返回一个对象列表。如果我想检查用户是否存在,我将不得不执行一个循环。我认为有一种更简单的方法可以做到这一点。

最佳答案

the same page of the manual :

pwd.getpwnam(name)

Return the password database entry for the given user name.

这是存在和不存在用户的结果:

>>> import pwd
>>> pwd.getpwnam('root')
pwd.struct_passwd(pw_name='root', pw_passwd='*', pw_uid=0, pw_gid=0, pw_gecos='System Administrator', pw_dir='/var/root', pw_shell='/bin/sh')
>>> pwd.getpwnam('invaliduser')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'getpwnam(): name not found: invaliduser'

因此你可以这样做:

try:
    pwd.getpwnam(name)
except KeyError:
    # Handle non existent user
    pass
else:
    # Handle existing user
    pass

注意:无论如何,in 运算符都会执行一个循环来检查给定的项目是否在列表 (ref) 中。

关于python - 有没有一种干净的方法可以通过 python 检查计算机上是否存在给定用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6916208/

相关文章:

python - 给定一个邻接矩阵,如何用matplotlib画图?

linux - 使用轮询和中断方法查找 CPU 效率

linux - 相当于 OpenELEC 上的 apt-get

linux - 如何在进程结束后自动关闭 `qemu`的执行?

bash - 如何仅打印我当前所在的当前目录

linux - 当我包含 git bash 命令行时,pwd 在 Windows 中不起作用?

c - getcwd 在内核(库)中是如何实现的?

python - 从 docker 容器访问主机 redis 数据库

python - 如何根据上一行和下一行的条件在 Pandas Dataframe 上创建新列?

python - 如何用 Python 编写 MIDI 文件?