什么是获取当前用户的用户名的可移植方法(例如Linux和Windows) ?类似于os.getuid()的东西会很好:

>>> os.getuid()
42

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

pwd模块仅适用于Unix。有些人认为,在某些情况下,在Windows下获取用户名可能会很复杂(例如,作为Windows服务运行)。


当前回答

对我来说,使用os模块的可移植性最好:在Linux和Windows上都最好。

import os

# Gives user's home directory
userhome = os.path.expanduser('~')          

print "User's home Dir: " + userhome

# Gives username by splitting path based on OS
print "username: " + os.path.split(userhome)[-1]           

输出:

窗口:

用户的主目录:C:\Users\myuser 用户名:myuser

Linux:

用户的主目录:/root 用户名:根

不需要安装任何模块或扩展。

其他回答

结合os.getuid()和pwd. getpwid ():

import os
import pwd

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

有关更多细节,请参阅pwd文档。

这对我来说很管用:

import os
os.cmd("whoami")
print (os.cmd("whoami"))

如果你需要这个来获取用户的home目录,下面可以被认为是可移植的(至少win32和linux),标准库的一部分。

>>> os.path.expanduser('~')
'C:\\Documents and Settings\\johnsmith'

此外,你可以解析这样的字符串,只得到最后的路径组件(即。用户名)。

看:os.path.expanduser

对我来说,使用os模块的可移植性最好:在Linux和Windows上都最好。

import os

# Gives user's home directory
userhome = os.path.expanduser('~')          

print "User's home Dir: " + userhome

# Gives username by splitting path based on OS
print "username: " + os.path.split(userhome)[-1]           

输出:

窗口:

用户的主目录:C:\Users\myuser 用户名:myuser

Linux:

用户的主目录:/root 用户名:根

不需要安装任何模块或扩展。

结合pwd和getpass方法,基于其他答案:

try:
  import pwd
except ImportError:
  import getpass
  pwd = None

def current_user():
  if pwd:
    return pwd.getpwuid(os.geteuid()).pw_name
  else:
    return getpass.getuser()