首先来看看错误方法:
- 以下是在64位机器下使用32位python得到的结果
In [14]: sys.version
Out[14]: '2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)]'
- 这里看到的其实是python的版本,而不是系统的版本
In [15]: platform.architecture()
Out[15]: ('32bit', 'WindowsPE')
- 这个运行的结果也是不正确的
In [16]: print sys.maxint
2147483647
- 数字是2**31-1的话就是32位(这是错误的!!!)
- 数字式2**64-1的话就是64位(这也是错误的!!!)
上面引述的方法也是不正确的,因为使用的是sys库
正确方法
1. 通过环境变量进行判断
def is_64_windows():
return 'PROGRAMFILES(X86)' in os.environ
2. 通过注册表进行判断
aReg = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, \
"SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run")
- 存在即为64bits
- 如果不存在会抛出异常,进行捕获判断返回32bits
个人观点到此结束,如果有其他方法可以评论回复我,THX
Comments
comments powered by Disqus