Вопрос-Ответ

Is there a portable way to get the current username in Python?

Есть ли переносимый способ получить текущее имя пользователя в Python?

Какой переносимый способ (например, для Linux и Windows) получить имя пользователя текущего пользователя? Что-то похожее на os.getuid() было бы неплохо:

>>> os.getuid()
42

# Does not currently exist in Python
>>> os.getusername()
'slartibartfast'

Модуль pwd работает только для Unix. Некоторые люди предполагают, что получение имени пользователя в Windows может быть сложным при определенных обстоятельствах (например, при запуске в качестве службы Windows).

Переведено автоматически
Ответ 1

Посмотрите на getpass модуль

import getpass
getpass.getuser()
'kostya'

Доступность: Unix, Windows


p.s. Согласно комментарию ниже "эта функция просматривает значения различных переменных среды для определения имени пользователя. Следовательно, на эту функцию не следует полагаться в целях контроля доступа (или, возможно, для любых других целей, поскольку она позволяет любому пользователю выдавать себя за любого другого)."

Ответ 2

Объединить os.getuid() с pwd.getpwuid():

import os
import pwd

def get_username():
return pwd.getpwuid(os.getuid())[0]

Смотрите pwd документы для получения более подробной информации.

Ответ 3

Вы также можете использовать:

os.getlogin()
Ответ 4

Windows:

os.environ.get('USERNAME')

Linux:

os.environ.get('USER')

Оба:

os.environ.get('USER', os.environ.get('USERNAME'))

Обратите внимание, что переменные среды могут быть изменены пользователем, так что это потенциальная уязвимость в системе безопасности. С помощью этого метода злоумышленник может легко подделать свое имя пользователя.

2023-10-13 12:45 python