Python os.environ[“HOME”] works on idle but not in

2019-03-24 07:56发布

I am working on a simple Python (2.7.3) script, but I have to get the user's Home Folder. I tried:

import os
home_folder = os.environ["HOME"]

And it works fine when I'm running this code on IDLE, but if I launch it from the cmd, it gives me: «KeyError: 'HOME'»

Can someone tell me why? How can I solve this problem?

3条回答
做个烂人
2楼-- · 2019-03-24 08:05

Sounds like you're trying to run this on Windows based entirely on your "[launching] it from the cmd". IDLE is giving you that as a convenience; on Windows use USERPROFILE instead of HOME. The %USERPROFILE% envar is the Win32 $HOME.

查看更多
时光不老,我们不散
3楼-- · 2019-03-24 08:13

Windows uses USERPROFILE, instead of HOME. Windows doesn't have HOME and other OSs don't have USERPROFILE, so using either of these drops platform independence.

To keep platform independence, you can use expanduser from os.path, like so:

import os.path
home_folder = os.path.expanduser('~')

On a side note, you can use print(os.environ) to see all the environment variables you to have access to, which shows that IDLE has extras.

查看更多
别忘想泡老子
4楼-- · 2019-03-24 08:18

Windows has no HOME environment variable. It uses USERPROFILE instead. To solve the problem you can define a new variable "HOME" typing on your console:

set HOME=%USERPROFILE%

as a copy of the USERPROFILE variable.

You can check that they are identical typing:

echo %USERPROFILE%
echo %HOME%

It will work for the current session.

查看更多
登录 后发表回答