在Linux下的Python中,考慮到他/她的登錄,檢查用戶是否存在的最簡單方法是什麼?判斷一個給定的登錄是否存在於使用Python的Linux中
發出'ls〜login-name'並檢查退出代碼是否更好?
如果在Windows下運行?
在Linux下的Python中,考慮到他/她的登錄,檢查用戶是否存在的最簡單方法是什麼?判斷一個給定的登錄是否存在於使用Python的Linux中
發出'ls〜login-name'並檢查退出代碼是否更好?
如果在Windows下運行?
此答案建立在answer by Brian的基礎上。它增加了必要的try...except
塊。用戶是否存在
檢查:如果組存在
import pwd
try:
pwd.getpwnam('someusr')
except KeyError:
print('User someusr does not exist.')
檢查:
import grp
try:
grp.getgrnam('somegrp')
except KeyError:
print('Group somegrp does not exist.')
我會解析/ etc/passwd的用戶名。用戶可能不一定有homedir的。
這會失敗,例如,正在使用LDAP。 – 2010-03-29 21:15:44
+1表示用戶可能不一定有本地人。 – 2010-03-29 21:19:41
我的印象是並不是所有的linux版本都在/ etc/passwd文件中存儲用戶信息...... – Powertieke 2010-03-29 21:28:49
使用pwd,您可以使用pwd.getpwall()獲取所有可用用戶條目的列表。如果你不喜歡嘗試:/ except:blocks,這可以工作。
import pwd
userid = "zomobiba"
if userid in [x[0] for x in pwd.getpwall()]:
print "Yay"
好的,但沒有理由不喜歡'嘗試...除了'塊。使用'getpwnam'查詢單個用戶的效率要高於使用'getpwall'查詢所有用戶的效率。 – 2013-03-01 23:26:42
類似this answer,我這樣做:
>>> import pwd
>>> 'tshepang' in [entry.pw_name for entry in pwd.getpwall()]
True
這將引發'KeyError異常'如果找不到用戶名。 – 2010-03-29 18:59:16
在這裏找到更多信息:http://www.doughellmann.com/PyMOTW/pwd/ – Elifarley 2010-03-30 18:38:55
我現在已經添加了必要的'try ... except'塊的答案。 – 2013-03-01 23:24:26