Python:获取 Windows 操作系统版本和体系结构

标签 python windows cpu-architecture

首先,我不认为这个问题是重复的
Detect 64bit OS (windows) in Python
因为恕我直言,它还没有得到彻底的回答。

唯一接近的答案是:

Use sys.getwindowsversion() or the existence of PROGRAMFILES(X86) (if 'PROGRAMFILES(X86)' in os.environ)

但是:

  • windows环境变量PROGRAMFILES(X86)可靠吗?我担心任何人都可以创建它,即使它不在系统中。
  • 如何使用 sys.getwindowsversion() 获取架构?

关于sys.getwindowsversion():
链接http://docs.python.org/library/sys.html#sys.getwindowsversion
带领我们到http://msdn.microsoft.com/en-us/library/ms724451%28VS.85%29.aspx
但我没有看到任何与架构(32 位/64 位)相关的内容。
此外,返回的元组中的平台元素似乎与架构无关。

最后一点:我正在寻找同时使用 python 2.5 和从 Windows XP 开始的 Windows 版本的解决方案

谢谢!

编辑:
相关信息可在此处找到
http://msdn.microsoft.com/en-us/library/ms724340%28v=VS.85%29.aspx
但是我怎样才能用 python 得到它呢?

编辑2: 在 64 位 Windows 上,使用 32 位 python 解释器:

  • os.environ["PROCESSOR_ARCHITECTURE"] 返回
    • 'x86'
  • platform.architecture() 返回
    • ('32位', 'WindowsPE')

最佳答案

我认为平台模块确实是获取此信息的最佳方式。

  >>> import platform
  >>> platform.platform()
  'Windows-7-6.1.7601-SP1'
  platform.processor()
  'Intel64 Family 6 Model 42 Stepping 7, GenuineIntel'

我看不到从哪里可以得到关于 32/64 位 Windows 的明确答案,所以我建议:

  try:
      os.environ["PROGRAMFILES(X86)"]
      bits = 64
  except:
      bits = 32
  print "Win{0}".format(bits)

或者,如果您需要知道您正在运行哪种 Python 版本(因为您可以在 x64 Windows 下运行 x32 python):

x32 python x64 windows:
>>> platform.architecture()
('32bit', 'WindowsPE')
>>> sys.version
'2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)]'

x64 python x64 windows:
>>> platform.architecture()
('64bit', 'WindowsPE')
>>> sys.version
'2.7.2 (default, Jun 12 2011, 14:24:46) [MSC v.1500 64 bit (AMD64)]'

关于Python:获取 Windows 操作系统版本和体系结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2764356/

相关文章:

java - 为什么 Windows Server 2008 认为意大利应该在西欧时间?

ruby-on-rails - Windows 上的 Ruby On Rails - Linux VM 或双引导

安卓 SDK。无法启动 AVD

python - 如何更改 numpy 矩阵元素的一定数量?

python - 将图形嵌入 GUI(Qtdesigner 和 Pyside)

c++ - C 中的 Flex 在 64 位 Windows 7 计算机上编译时生成不受支持的 16 位应用程序

cpu-architecture - 短寻址模式和长寻址模式有什么区别

assembly - 是否可以在 RAM 中执行一些计算?

Python包导入报错--Python无法识别包

python - 密码学 Python Docker 多阶段构建