Jea*_* T. 7 windows python windows-domain
我想用 Python 检索 Windows 计算机用户的全名。
我找到了等效的批处理命令:
net user "%USERNAME%" /domain | FIND /I "Full Name"
Run Code Online (Sandbox Code Playgroud)
返回全名(例如Full Name John Doe)。
我已经通过使用完成了以下方法,subprocess但我想知道是否有更原生的方法可以使用某些Python模块来完成此操作。
import getpass
import subprocess
import re
username = getpass.getuser()
p = subprocess.Popen(
'net user %s /domain' % username,
stdout=subprocess.PIPE, stderr=subprocess.PIPE
)
info, err = p.stdout.read(), p.stderr.read()
full_name = re.findall(r'Full Name\s+(.*\S)', info)
print(full_name)
Run Code Online (Sandbox Code Playgroud)
谢谢
根据@Bob的评论,以下内容在Windows上运行并且是纯Python,但需要安装pywin32(基于此Recipe):
import win32api
import win32net
user_info = win32net.NetUserGetInfo(win32net.NetGetAnyDCName(), win32api.GetUserName(), 2)
full_name = user_info["full_name"]
Run Code Online (Sandbox Code Playgroud)
问题中仅使用的脚本的另一个较短版本subprocess是:
import subprocess
name = subprocess.check_output(
'net user "%USERNAME%" /domain | FIND /I "Full Name"', shell=True
)
full_name = name.replace(b"Full Name", b"").strip()
Run Code Online (Sandbox Code Playgroud)
注意:对于 Python 2.7,在最后一个示例中,您需要将最后一行更改为 ...replace("Full Name", "").strip()
| 归档时间: |
|
| 查看次数: |
24088 次 |
| 最近记录: |