我知道如何使用 os 或 getpass.getuser() 获取当前用户,但是有没有办法获取所有用户的列表,而不仅仅是当前用户?阅读 os 和 getpass 文档,但我什么也没做。
问问题
2782 次
2 回答
1
这是特定于操作系统的。
在 Linux 中,请参阅Python 脚本以列出用户和组。
在 Windows 中:
通过 WMI
- 解析
wmic UserAccount get Name
, 或 wmi
使用模块进行相同的调用:import wmi w=wmi.WMI() # The argument (field filter) is only really needed if browsing a large domain # as per the warning at https://docs.microsoft.com/en-us/windows/desktop/cimwin32prov/win32-useraccount # Included it for the sake of completeness for u in w.Win32_UserAccount(["Name"]): #Net print u.Name del u
- 解析
-
- 解析
net user
, 或 拨打同样的电话
pywin32
:import win32net, win32netcon names=[]; resumeHandle=0 while True: data,_,resumeHandle=win32net.NetUserEnum(None,0, win32netcon.FILTER_NORMAL_ACCOUNT,resumeHandle) names.extend(e["name"] for e in data) if not resumeHandle: break del data,resumeHandle print names
- 解析
于 2019-05-25T00:38:40.980 回答
0
针对特定于 Windows 的方法的两个想法:
from pathlib import Path
users = [x.name for x in Path(r'C:\Users').glob('*') if x.name not in ['Default', 'Default User', 'Public', 'All Users'] and x.is_dir()]
print(users)
C:\Users 中的路径
import os
os.system('net user > users.txt')
users = Path('./users.txt').read_text()
print(users)
来自网络用户的输出
于 2019-05-24T23:46:40.247 回答