SUGGEST: os.getuser()

Gerrit Holl gerrit.holl at pobox.com
Sun Jan 16 13:49:14 EST 2000


Fredrik Lundh wrote on 948044608:
> Gerrit Holl wrote:
> > may I suggest this function for in the posix module:
> > 
> > def getuser():
> >     import pwd
> >     return pwd.getpwuid(getuid())[0]
> 
> you'll find a more complete implementation of that
> function in the getpass module:

The code of that getuser() is:

def getuser():
        """Get the username from the environment or password database.

        First try various environment variables, then the password
        database.  This works on Windows as long as USERNAME is set.

        """

        import os

        for name in ('LOGNAME', 'USER', 'LNAME', 'USERNAME'):
                user = os.environ.get(name)
                if user:
                        return user

        # If this fails, the exception will "explain" why
        import pwd
        return pwd.getpwuid(os.getuid())[0]

So the user can mislead the program. I think the other way would be better:

...
try:
    import pwd
    return pwd.getpwuid(os.getuid())[0]
except ImportError:
    import os
    for name in ('LOGNAME', 'USER', 'LNAME', 'USERNAME'):
        user = os.environ.get(name)
        if user:
            return user
    return None

regards,
Gerrit.

-- 
Please correct any bad English you encounter in my email message!
-----BEGIN GEEK CODE BLOCK----- http://www.geekcode.com
Version: 3.12
GCS dpu s-:-- a14 C++++>$ UL++ P--- L+++ E--- W++ N o? K? w--- !O !M !V PS+ PE?
Y? PGP-- t- 5? X? R- tv- b+(++) DI D+ G++ !e !r !y
-----END GEEK CODE BLOCK-----




More information about the Python-list mailing list