Python os.environ [“HOME”]适用于空闲但不适用于脚本

时间:2013-02-07 01:29:58

标签: python python-2.7 cmd

我正在开发一个简单的Python(2.7.3)脚本,但我必须得到用户的主文件夹。 我试过了:

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

当我在IDLE上运行此代码时,它工作正常,但如果我从cmd启动它,它会给我:«KeyError: 'HOME'»

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

3 个答案:

答案 0 :(得分:19)

Windows使用USERPROFILE,而不是HOME。 Windows没有HOME,而其他操作系统没有USERPROFILE,因此使用其中任何一个都会降低平台独立性。

为了保持平台的独立性,您可以使用expanduser中的os.path,如下所示:

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

在旁注中,您可以使用print(os.environ)查看您有权访问的所有环境变量,这表明IDLE有额外内容。

答案 1 :(得分:4)

Windows没有HOME环境变量。它使用USERPROFILE代替。 要解决这个问题,你可以定义一个新变量" HOME"在你的控制台上输入:

set HOME=%USERPROFILE%

作为USERPROFILE变量的副本。

您可以检查它们是否完全相同:

echo %USERPROFILE%
echo %HOME%

它适用于当前会话。

答案 2 :(得分:1)

听起来你正试图在Windows上完全基于你的“从cmd”[启动]来运行它。 IDLE为您提供便利;在Windows上使用USERPROFILE而不是HOME%USERPROFILE% envar是Win32 $HOME