python的os.path.expanduser('〜')精神分裂症的窗口行为

时间:2016-01-01 21:25:02

标签: python environment-variables

from os.path import expanduser
print expanduser('~')

在" dos"框命令行:

c:c:\users\myuser     <-- incorrect

在pythonwin会话中:

c:\users\myuser       <-- correct
对于两个解释器来说,它都是相同的python 2.7.8解释器。 这可能取决于我是否从控制台运行。

如果我从命令行运行脚本,那就错了。从pythonwin运行的相同脚本显示正确的版本。

发生了什么? (我在Windows7上)

C:\> echo %HOMEDRIVE%
C:

C:\> echo %HOMEPATH%
\Users\myuser

C:\> echo %HOME%
C:C:\Users\myuser          <--  aha!

1 个答案:

答案 0 :(得分:4)

这里发生的事情是Python正在将~扩展为以下之一,具有以下优先级:

  • %HOME%
  • %USERPROFILE%
  • %HOMEDRIVE%%HOMEPATH%

因此,在您的计算机上,我怀疑HOMEPATH已定义c:\users\myuser而不是正确的\users\myuserHOMEDRIVE可能已正确设置为c:

在你的pythonwin中,它可能正确定义HOMEUSERPROFILE

来自Python docs

  

在Windows上,如果设置将使用HOME和USERPROFILE,否则将使用HOMEPATH和HOMEDRIVE的组合。通过从上面派生的创建的用户路径中剥离最后一个目录组件来处理初始〜用户。