【发布时间】:2022-12-14 07:51:18
【问题描述】:
我有 a Python script 位于 /home/gabriel/dev/cpu_logger.py。在其中我正在登录/home/gabriel/cpu_log.log。我使用 pathlib.Path.home() 获取脚本中的 /home/gabriel 部分,如下所示。我将该部分用作我的log_file_path 的目录:
import pathlib
home_dir = str(pathlib.Path.home())
log_file_path = os.path.join(home_dir, 'cpu_log.log')
但是,我现在需要以 root 身份运行脚本允许它设置一些受限制的文件权限,所以我使用 crontab following these instructions here 将它配置为在启动时以 root 身份运行。现在,因为它以 root 身份运行,上面的 home_dir 变成了 /root,所以 log_file_path 变成了 /root/cpu_log.log。那不是我想要的!我想让它登录到/home/gabriel/dev/cpu_logger.py。
我怎样才能做到这一点?
但是,我不想显式设置该路径,因为我打算让其他人使用此脚本,因此不得对其进行硬编码。
我考虑将主用户的用户名作为第一个参数传递给程序,并使用os.path.expanduser("~" + username) 获取该用户的home_dir:
import os
import sys
username = sys.argv[1]
home_dir = os.path.expanduser("~" + username)
...但如果不需要的话,我不想传递这样的额外参数。即使此脚本在 root 用户下运行,我如何才能将主目录设为 /home/gabriel?
【问题讨论】: