How to find the real user home directory using python?
我看到,如果我们更改home(linux)或userprofile(windows)环境变量并运行python脚本,当我尝试时,它将返回新值作为用户home,os.environ[主页]OX-EXP
是否有任何方法可以在不依赖环境变量的情况下找到真正的用户主目录?
编辑:这里有一种方法可以通过在注册表中读取来在Windows中查找用户主页,http://mail.python.org/pipermail/python-win32/2008-1月/006677.html
编辑:使用pywin32查找Windows Home的一种方法,
1 2 | from win32com.shell import shell,shellcon home = shell.SHGetFolderPath(0, shellcon.CSIDL_PROFILE, None, 0) |
我认为
On Unix and Windows, return the argument with an initial component of
~ or~user replaced by that user‘s home directory.On Unix, an initial
~ is replaced by the environment variable HOME if it is set; otherwise the current user’s home directory is looked up in the password directory through the built-in modulepwd . An initial~user is looked up directly in the password directory.On Windows, HOME and USERPROFILE will be used if set, otherwise a combination of HOMEPATH and HOMEDRIVE will be used. An initial
~user is handled by stripping the last directory component from the created user path derived above.If the expansion fails or if the path does not begin with a tilde, the path is returned unchanged.
号
所以你可以这样做:
1 | os.path.expanduser('~user') |
我认为
1 2 3 | import os, pwd pwd.getpwuid(os.getuid()).pw_dir |
号
1 2 3 | from pathlib import * str(Path.home()) |
。
适用于python 3.5及更高版本。
埃多克斯1〔5〕
这在Windows和Mac操作系统上也应该有效,在Linux上也可以很好地工作。
对于窗户;
1 2 | import os homepath = os.path.expanduser(os.getenv('USERPROFILE')) |
将为您提供当前用户的主目录和
1 | filepath = os.path.expanduser(os.getenv('USERPROFILE'))+'\\Documents\\myfile.txt' |
。
会给你一个处理下面的文件;
1 | C:\Users\urUserName\Documents\myfile.txt |
我意识到这是一个已经被回答的老问题,但我想我会加上我的两分钱。接受的回答对我来说不起作用。我需要找到用户目录,我希望它可以与
1 2 | _USERNAME = os.getenv("SUDO_USER") or os.getenv("USER") _HOME = os.path.expanduser('~'+_USERNAME) |
。
在Mac和Linux上,无论是否使用
实际上,环境变量的变化表明必须更改主目录。因此,每个程序/脚本都应该有上下文中的新家;而且后果取决于更改它的人。我还是会坚持江户十一〔一〕号
具体需要什么?
获取(翻译)Linux上的用户文件夹名称:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | from gi.repository import GLib docs = GLib.get_user_special_dir(GLib.USER_DIRECTORY_DOCUMENTS) desktop = GLib.get_user_special_dir(GLib.USER_DIRECTORY_DESKTOP) pics = GLib.get_user_special_dir(GLib.USER_DIRECTORY_PICTURES) videos = GLib.get_user_special_dir(GLib.USER_DIRECTORY_VIDEOS) music = GLib.get_user_special_dir(GLib.USER_DIRECTORY_MUSIC) downloads = GLib.get_user_special_dir(GLib.USER_DIRECTORY_DOWNLOAD) public = GLib.get_user_special_dir(GLib.USER_DIRECTORY_PUBLIC_SHARE) templates = GLib.get_user_special_dir(GLib.USER_DIRECTORY_TEMPLATES) print(docs) print(desktop) print(pics) print(videos) print(music) print(downloads) print(public) print(templates) |
在Linux和其他unixoids上,您可以随时查看