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

Просто используйте .Name следующим образом:

typeof(T).Name

Это дает, например, «String», также .FullName, который даст «System.String»

547
задан Jacob Gabrielson 16 December 2010 в 18:40
поделиться

6 ответов

Look at getpass module

import getpass
getpass.getuser()
'kostya'

Availability: Unix, Windows


p.s. Per comment below "this function looks at the values of various environment variables to determine the user name. Therefore, this function should not be relied on for access control purposes (or possibly any other purpose, since it allows any user to impersonate any other)."

782
ответ дан 22 November 2019 в 22:09
поделиться

Вы, вероятно, можете использовать:

os.environ.get('USERNAME')

или

os.environ.get('USER')

Но это будет небезопасно, потому что переменные среды можно изменить.

64
ответ дан 22 November 2019 в 22:09
поделиться

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

 os.getlogin()
78
ответ дан 22 November 2019 в 22:09
поделиться

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

win32api.GetUserName()

win32api.GetUserNameEx(...) 

Смотрите: http://timgolden.me.uk/python/win32_how_do_i/get-the-owner-of-a-file.html

21
ответ дан 22 November 2019 в 22:09
поделиться

Некоторое время назад я написал модуль plx, чтобы получить имя пользователя портативным способом на Unix и Windows (среди прочего): http://www.decalage.info/en/python/plx

Использование:

import plx

username = plx.get_username()

(для него требуются win32 расширения на Windows)

.
5
ответ дан 22 November 2019 в 22:09
поделиться

Лучше всего объединить os.getuid () с pwd.getpwuid () :

import os
import pwd

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

Обратитесь к документации pwd для подробнее:

http://docs.python.org/library/pwd.html

104
ответ дан 22 November 2019 в 22:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: