如何用Python keyring 获取用户名?
我在我的Windows 7电脑上有一个Mercurial密钥环。我正在使用Python的keyring
库来从Mercurial密钥环中获取用户的登录信息。
我可以通过以下方式获取某个用户名的密码:
keyring.get_password('Mercurial', 'user@@etc')
有没有类似的功能可以获取用户名呢?
5 个回答
9
更新:从 Keyring 15.2.0 开始,你可以改用
keyring.get_credential
。
虽然 keyring
主要是用来存储密码的,但你可以巧妙地使用 get_password
来单独存储用户名。
import keyring
# store username & password
keyring.set_password("name_of_app", "username", "user123")
keyring.set_password("name_of_app", "password", "pass123")
# retrieve username & password
username = keyring.get_password("name_of_app", "username")
password = keyring.get_password("name_of_app", "password")
另外,如果你想把用户名和密码放在一起存储:
import keyring
service_id = "name_of_app"
username = "user123"
# store username & password
keyring.set_password(service_id, "username", username)
keyring.set_password(service_id, username, "pass123")
# retrieve username & password
username = keyring.get_password(service_id, "username")
password = keyring.get_password(service_id, username)
感谢 Dustin Wyatt 和 Alex Chan 提供的这个解决方案。
12
在Windows系统上,我可以通过以下方式获取用户名和密码(也就是“凭据”):
c = keyring.get_credential("servicename", None)
需要注意的是,这个方法在macOS上是行不通的,因为keyring
这个工具在macOS上没有搜索条目的功能——也就是说,你必须知道用户名。我想如果使用原生代码的话,可能可以实现这个功能,具体可以参考官方文档。
7
你应该把用户名存放在其他地方。
钥匙串只存储密码,存储时是根据应用名称和用户名来区分的。