Python:如何知道OS / CPU是否为64位

时间:2017-02-06 10:09:07

标签: python

在Windows下,我正在运行32位python.exe。我需要知道OS / CPU是64位还是32位。

我的机器正在运行Windows7 64位。

选中this post,并尝试运行此Python脚本:

import ctypes; print(32 if ctypes.sizeof(ctypes.c_voidp)==4 else 64, 'bit CPU')
import sys; print("%x" % sys.maxsize, sys.maxsize > 2**32)
import struct; print( 8 * struct.calcsize("P"))
import platform; print( platform.architecture()[0] )
print( platform.machine() )

输出:

32 bit CPU
7fffffff False
32
32bit
AMD64

参考帖子的任何提案都没有真正为您提供CPU / OS体系结构信息。它们都报告了32位,因为我正在运行Python 32位二进制文​​件。

如何以便携方式确定CPU / OS是32位还是64位(可以在platform.machine()中找到64位字符串,但我怀疑这是好方法吗?

2 个答案:

答案 0 :(得分:1)

您查询的大多数信息取决于解释器的单词大小,而不是CPU。

只有platform.machine()会忽略此信息;它取自系统uname -m数据,这是建议的命令,用于确定您的系统对于LinuxOS X是否为64位,并且Windows提供完全相同的信息( Python在所有情况下都使用C uname()函数。)

测试该字符串中的64,或构建一组可接受的值:

'64' in platform.machine()

platform.machine() in {'x86_64', 'AMD64'}

答案 1 :(得分:1)

来自https://stackoverflow.com/a/12578715/4124672

您可能希望将此解决方案用于python2.7和更新版本:

def is_os_64bit():
    return platform.machine().endswith('64')