Python在64位Vista上获取os.environ["ProgramFiles"]的值错误

12 投票
4 回答
22546 浏览
提问于 2025-04-15 13:37

在一台运行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 个回答

8

你能安装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)
>>>
8

你正在使用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版本。

13

来自维基百科的内容:

%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%

撰写回答