Python在64位Vista上获取os.environ["ProgramFiles"]的值错误
在一台运行Vista64系统的电脑上,使用的是Python 2.4.3。
环境中有以下两个变量:
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
但是当我运行下面的代码时
import os
print os.environ["ProgramFiles"]
print os.environ["ProgramFiles(x86)"]
我得到的是:
C:\Program Files (x86)
C:\Program Files (x86)
有没有人知道我怎么才能得到“ProgramFiles”的正确值呢?
4 个回答
你能安装Python 2.5.4再试一次吗?更新一下:我说的是2.5.4的x64版本。根据我所知,2.4只在Windows x86和IA64上可用,而不是x64。
我在Windows 7 x64上运行的是2.5.4 x64,结果和你不一样,但我不确定问题出在Python上还是Vista上。
Python 2.5.4 (r254:67916, Dec 23 2008, 15:19:34) [MSC v.1400 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> print os.environ["ProgramFiles"]
C:\Program Files
>>> print os.environ["ProgramFiles(x86)"]
C:\Program Files (x86)
>>>
你正在使用32位的Python解释器。当你使用32位的软件时,WOW64会创建一个新的环境,里面有自己的文件夹和替代设置。
你可以通过启动64位和32位的命令提示符来看看我在说什么:
64位命令提示符(cmd.exe):
C:\Documents and Settings\Administrator>set prog
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
32位命令提示符(cmd.exe):
C:\WINDOWS\SysWOW64>set prog
ProgramFiles=C:\Program Files (x86)
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
从上面的第二段内容可以看到,要访问64位的程序文件,你需要使用ProgramW6432
这个环境变量。
不过,还有另一种方法可以解决将来可能出现的其他问题(特别是关于注册表设置的问题!):那就是直接使用64位的Python版本——虽然我不知道在哪里可以下载到64位的2.4版本。
来自维基百科的内容:
%ProgramFiles%
这个变量指向“程序文件”目录,这里存放着所有安装的Windows程序和其他程序。在英文系统中,默认路径是C:\Program Files。在64位版本的Windows(比如XP、2003、Vista)中,还有一个变量叫做%ProgramFiles(x86)%,它的默认路径是C:\Program Files (x86),另外还有一个%ProgramW6432%变量,默认路径是C:\Program Files。%ProgramFiles%这个变量的值取决于请求它的程序是32位还是64位(这是因为Windows在64位系统中会进行一些重定向处理)。
所以,如果你想得到C:\Program Files这个路径,实际上你应该查看%ProgramW6432%
。