【问题标题】:In python how to get normal username from the root user?在python中如何从root用户获取普通用户名?
【发布时间】:2021-11-21 01:41:19
【问题描述】:

当我想要一个用户目录作为 Python3 中的普通用户时,从终端

>>> os.path.expanduser('~')
/home/user

当我在根目录下运行时 (sudo su)

 >>> os.path.expanduser('~')
    /root/

python3中有没有办法从root用户获取/home/user目录?

【问题讨论】:

  • Raspbian 是一个多用户系统,没有“用户”的概念,可能有很多用户——所以你需要知道你指的是哪一个。跨度>

标签: python python-3.x ubuntu raspberry-pi raspberry-pi4


【解决方案1】:

我认为你想要的是os.getlogin() 甚至更好的getpass.getlogin()。根据os.login()的标准库文档:

在大多数情况下,使用 getpass.getuser() 更有用,因为后者检查环境变量 LOGNAME 或 USERNAME 以找出用户是谁,然后回退到 pwd.getpwuid(os.getuid()) [0] 获取当前真实用户id的登录名。

所以如果要注意环境变量,请使用getpass.getlogin() else 首选os.getlogin()

【讨论】:

  • 只返回root
【解决方案2】:
os.path.expanduser('~{user}')

其中 {user} 是任何用户,在您的情况下...用户:

os.path.expanduser('~user')

【讨论】:

  • 谢谢,它正在工作。但是我怎样才能找到用户名呢?
  • 为什么不提前知道要扩展哪个用户目录?
  • 我不想依赖同一个用户名和同一个用户目录,这就是为什么
  • 您可以遍历 /home 下的每个目录名称以获取我想的所有用户。
【解决方案3】:
cd /home/user && sudo python3 main.py

格式,它将在您想要的任何目录中运行。

【讨论】:

  • 我在我的主脚本中运行这个命令并且我已经在 root 用户模式下运行了这个 python 脚本
猜你喜欢
  • 2019-05-03
  • 2019-04-06
  • 2015-10-28
  • 1970-01-01
  • 1970-01-01
  • 2018-12-01
  • 2021-05-07
  • 2014-12-18
  • 1970-01-01
相关资源
最近更新 更多