Python os.environ["HOME"] 在IDLE中有效,但在脚本中无效

18 投票
3 回答
18090 浏览
提问于 2025-04-17 15:02

我正在写一个简单的Python(2.7.3)脚本,但我需要获取用户的主文件夹。

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

当我在IDLE上运行这段代码时,一切都很好,但如果我从命令行启动它,就会出现:«KeyError: 'HOME'»

有人能告诉我这是为什么吗?我该如何解决这个问题?

3 个回答

1

听起来你是在Windows上运行这个,因为你提到了从命令行(cmd)启动它。IDLE给你这个提示是为了方便你;在Windows上,你应该用USERPROFILE而不是HOME%USERPROFILE%这个环境变量就相当于Windows里的$HOME

6

在Windows系统中,没有叫做HOME的环境变量。它用的是USERPROFILE这个变量。

要解决这个问题,你可以在控制台里定义一个新的变量“HOME”,方法是输入:

set HOME=%USERPROFILE%

这个新变量会和USERPROFILE变量一模一样。

你可以通过输入以下内容来检查它们是否相同:

echo %USERPROFILE%
echo %HOME%

这样做只会在当前会话中有效。

34

在Windows系统中,使用的是USERPROFILE,而不是HOME。其实,Windows没有HOME这个概念,而其他操作系统也没有USERPROFILE,所以如果只用这两个中的一个,就会失去跨平台的能力。

为了保持跨平台的能力,你可以使用os.path里的expanduser,用法如下:

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

顺便提一下,你可以用print(os.environ)来查看你可以访问的所有环境变量,这样可以发现IDLE还有一些额外的变量。

撰写回答