在python中的whoami

Jos*_*son 34 python posix

找出运行python进程的用户的最佳方法是什么?

我能做到这一点:

name = os.popen('whoami').read() 
Run Code Online (Sandbox Code Playgroud)

但这必须开始一个全新的过程.

os.environ["USER"]
Run Code Online (Sandbox Code Playgroud)

有时工作,但有时不设置环境变量.

Aym*_*ieh 72

import getpass
print getpass.getuser()
Run Code Online (Sandbox Code Playgroud)

请参阅getpass模块的文档.

getpass.getuser()

返回用户的"登录名".可用性:Unix,Windows.

此函数按顺序检查环境变量LOGNAME,USER,LNAME和USERNAME,并返回设置为非空字符串的第一个值.如果未设置,则在支持pwd模块的系统上返回密码数据库的登录名,否则将引发异常.

  • 很棒,但任何人都可以篡改这些变量.永远不要将此作为获取用户用户名的安全方式.你被警告了. (6认同)

小智 18

这应该在Unix下工作.

import os
print os.getuid() # numeric uid
import pwd
print pwd.getpwuid(os.getuid()) # full /etc/passwd info
Run Code Online (Sandbox Code Playgroud)