如何用Python keyring 获取用户名?

9 投票
5 回答
16570 浏览
提问于 2025-04-17 18:03

我在我的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 WyattAlex Chan 提供的这个解决方案。

12

在Windows系统上,我可以通过以下方式获取用户名和密码(也就是“凭据”):

c = keyring.get_credential("servicename", None)

需要注意的是,这个方法在macOS上是行不通的,因为keyring这个工具在macOS上没有搜索条目的功能——也就是说,你必须知道用户名。我想如果使用原生代码的话,可能可以实现这个功能,具体可以参考官方文档

7

你应该把用户名存放在其他地方。

钥匙串只存储密码,存储时是根据应用名称和用户名来区分的。

撰写回答