2011-08-02 17 views
2

現在、私はパスワードデータベース全体を表示するpwd.getpwall()を使用しています。しかし、私はちょうどコンピュータのユーザーアカウントが必要です。そしてgetpwall()私は(pwd.getpwall以来...与えられたユーザーがPythonを介してコンピュータに存在するかどうかを確認する明確な方法はありますか?

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

これを実行することができません)を使用してオブジェクトのリストを返します。ユーザーが存在するかどうかを確認したい場合は、ループを実行する必要があります。私はこれを行う簡単な方法があると仮定します。 the same page of the manual

答えて

8

pwd.getpwnam(name) 

戻り与えられたユーザー名のパスワードデータベースのエントリ。

これは、存在しないとinexistentユーザーのための結果である。したがって、あなたが行うことができます

>>> 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)。ユーザーが存在しない場合

1

pwd.getpwnamKeyErrorを発生させます:

def getuser(name): 
    try: 
     return pwd.getpwnam(name) 
    except KeyError: 
     return None 
0

次のようなもの使用することができます

>>> [x.pw_name for x in pwd.getpwall()] 

店リストを、ちょうどusername in list

をチェック
関連する問題