如何使用python找到真实的用户主目录?
我发现,如果我们更改 HOME (linux) 或 USERPROFILE (windows) 环境变量并运行 python 脚本,当我尝试时,它会返回新值作为用户主目录
os.environ['HOME']
os.exp
有没有办法不依赖环境变量找到真实的用户主目录?
编辑:
这是在 Windows 中通过读取注册表来查找 userhome 的方法,
http://mail.python.org/pipermail/python-win32 /2008-January/006677.html
编辑:
使用 pywin32 查找 Windows Home 的一种方法,
from win32com.shell import shell,shellcon
home = shell.SHGetFolderPath(0, shellcon.CSIDL_PROFILE, None, 0)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
我认为
os.path.expanduser(path)
可能会有所帮助。
所以你可以这样做:
I think
os.path.expanduser(path)
could be helpful.So you could just do:
适用于 Python 3.5 及更高版本。
Path.home()
返回一个Path
对象,提供 API 我发现非常有用。works in Python 3.5 and above.
Path.home()
returns aPath
object providing an API I find very useful.我认为 os.path.expanduser(path) 是您问题的最佳答案,但在 Unix 世界中还有一个值得一提的替代方案:
pwd
包。例如I think
os.path.expanduser(path)
is the best answer to your question, but there's an alternative that may be worth mentioning in the Unix world: thepwd
package. e.g.对于窗户;
将为您提供当前用户主目录的句柄,并将
为您提供以下文件的句柄;
For windows;
will give you a handle to current user's home directory and
will give you a handle to below file;
home_folder = os.getenv('HOME')
这应该也适用于 Windows 和 Mac OS,在 Linux 上也适用。
home_folder = os.getenv('HOME')
This should work on Windows and Mac OS too, works well on Linux.
事实上,环境变量的改变就意味着家必须改变。因此,每个程序/脚本都应该在上下文中拥有新家;后果也取决于改变它的人。
我仍然会坚持
home = os.getenv('USERPROFILE') 或 os.getenv('HOME')
到底需要什么?
Really, a change in environment variable indicates that the home must be changed. So every program/script should have the new home in context; also the consequences are up to the person who changed it.
I would still stick with
home = os.getenv('USERPROFILE') or os.getenv('HOME')
what exactly is required?
我意识到这是一个已经回答的老问题,但我想我会补充我的两分钱。接受的答案对我不起作用。我需要找到用户目录,并且希望它可以在使用或不使用
sudo
的情况下工作。在Linux中,我的用户目录是“/home/someuser”,但我的根目录是“/root/”。但是,在我的 Mac 上,用户目录是“/Users/someuser”。这是我最终所做的:无论在 Mac 和 Linux 上使用还是不使用
sudo
,这都有效。I realize that this is an old question that has been answered but I thought I would add my two cents. The accepted answer was not working for me. I needed to find the user directory and I wanted it to work with and without
sudo
. In Linux, my user directory is "/home/someuser" but my root directory is "/root/". However, on my Mac, the user directory is "/Users/someuser". Here is what I ended up doing:This worked both with and without
sudo
on Mac and Linux.在 Linux 上获取(翻译的)用户文件夹名称:
get (translated) user folder names on Linux:
在 Linux 和其他 UNIXoid 上,您始终可以查看
/etc/passwd
。主目录是其中第六个以冒号分隔的字段。但不知道如何比 Windows 上的环境变量做得更好。将会有一个系统调用它,但如果它可以从 Python 获得,...On Linux and other UNIXoids you can always take a peek in
/etc/passwd
. The home directory is the sixth colon-separated field in there. No idea on how to do better than the environment variable on Windows though. There'll be a system call for it, but if it's available from Python, ...