以root运行Python脚本时,如何获取脚本所属用户的主目录?
解决以root运行脚本时获取所属用户主目录的问题
你的核心需求是:脚本位于普通用户目录下,以root权限运行时,自动获取该脚本所属用户的主目录(而非root的/root),同时不用硬编码路径或额外传参。
实现思路
通过脚本文件的权限信息获取其所有者的UID,再根据UID查询该用户的主目录,具体步骤:
- 获取脚本的绝对路径
- 读取文件的所有者UID
- 通过UID查询用户的主目录信息
- 组装日志文件路径
完整代码示例
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
相关产品推荐
相关产品推荐

