什么是获取当前用户的用户名的可移植方法(例如Linux和Windows) ?类似于os.getuid()的东西会很好:
>>> os.getuid()
42
# Does not currently exist in Python
>>> os.getusername()
'slartibartfast'
pwd模块仅适用于Unix。有些人认为,在某些情况下,在Windows下获取用户名可能会很复杂(例如,作为Windows服务运行)。
什么是获取当前用户的用户名的可移植方法(例如Linux和Windows) ?类似于os.getuid()的东西会很好:
>>> os.getuid()
42
# Does not currently exist in Python
>>> os.getusername()
'slartibartfast'
pwd模块仅适用于Unix。有些人认为,在某些情况下,在Windows下获取用户名可能会很复杂(例如,作为Windows服务运行)。
当前回答
这对我来说很管用:
import os
os.cmd("whoami")
print (os.cmd("whoami"))
其他回答
结合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()
如果你需要这个来获取用户的home目录,下面可以被认为是可移植的(至少win32和linux),标准库的一部分。
>>> os.path.expanduser('~')
'C:\\Documents and Settings\\johnsmith'
此外,你可以解析这样的字符串,只得到最后的路径组件(即。用户名)。
看:os.path.expanduser
查看getpass模块
import getpass
getpass.getuser()
'kostya'
可用性:Unix, Windows
p.s.每个评论下面“这个函数查看各种环境变量的值来确定用户名。因此,该函数不应用于访问控制目的(或任何其他目的,因为它允许任何用户模仿任何其他用户)。”
您可以通过Windows API在Windows上获得当前用户名,尽管通过ctypes FFI (GetCurrentProcess→OpenProcessToken→GetTokenInformation→LookupAccountSid)调用它有点麻烦。
我写了一个小模块,可以直接用Python来做这个,getuser.py。用法:
import getuser
print(getuser.lookup_username())
它可以在Windows和*nix上工作(后者使用pwd模块,如其他答案所述)。
只使用标准的python库:
from os import environ,getcwd
getUser = lambda: environ["USERNAME"] if "C:" in getcwd() else environ["USER"]
user = getUser()
适用于Windows(如果您在C盘),Mac或Linux
或者,你可以通过立即调用删除一行:
from os import environ,getcwd
user = (lambda: environ["USERNAME"] if "C:" in getcwd() else environ["USER"])()