Alex Rivera | Logout

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

Asked 2009-05-08T22:20:20.120
799

What is a portable way (e.g. for Linux and Windows) to get the current user's username? Something similar to os.getuid() would be nice:

>>> os.getuid()
42

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

The pwd module works for Unix only. Some people suggest that getting the username under Windows can be complicated in certain circumstances (e.g., running as a Windows service).

Edit
Report

2 Answers

118

Windows:

os.environ.get('USERNAME')

Linux:

os.environ.get('USER')

Both:

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

Note that environment variables can be modified by the user, so this is a potential security vulnerability. With this method, an attacker can easily fake their username.

answered 2009-05-08T22:35:54.733
26

These might work. I don't know how they behave when running as a service. They aren't portable, but that's what os.name and ifstatements are for.

win32api.GetUserName()

win32api.GetUserNameEx(...) 

See: http://timgolden.me.uk/python/win32_how_do_i/get-the-owner-of-a-file.html

answered 2010-01-02T21:35:30.767

Your Answer