You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

以root运行Python脚本时,如何获取脚本所属用户的主目录?

解决以root运行脚本时获取所属用户主目录的问题

你的核心需求是:脚本位于普通用户目录下,以root权限运行时,自动获取该脚本所属用户的主目录(而非root的/root),同时不用硬编码路径或额外传参。

实现思路

通过脚本文件的权限信息获取其所有者的UID,再根据UID查询该用户的主目录,具体步骤:

  1. 获取脚本的绝对路径
  2. 读取文件的所有者UID
  3. 通过UID查询用户的主目录信息
  4. 组装日志文件路径

完整代码示例

import os
import pathlib
import pwd

# 获取脚本的绝对路径
script_path = pathlib.Path(__file__).resolve()
# 获取脚本文件的所有者UID
owner_uid = os.stat(script_path).st_uid
# 通过UID获取用户信息,其中pw_dir就是主目录
user_info = pwd.getpwuid(owner_uid)
home_dir = user_info.pw_dir

# 组装日志路径
log_file_path = os.path.join(home_dir, 'cpu_log.log')
print(f"日志文件路径:{log_file_path}")

说明

  • pwd模块是Unix/Linux系统专属模块,适配你的crontab运行场景;如果是Windows环境,需改用win32api等相关模块处理
  • 该方法完全自动,无需额外传参,也不用硬编码任何路径,适配不同用户使用该脚本的场景
  • 不管以哪个用户身份运行脚本,都会自动获取脚本本身所属用户的主目录

内容的提问来源于stack exchange,提问作者Gabriel Staples

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 23:45:34