我如何检查我是否在Python上运行在Windows上?

我find了平台模块,但它说它返回“Windows”,它在我的机器上返回“微软”。 我注意到在另一个线程在这里stackoverflow它有时返回“Vista”。

那么问题是,如何实施?

if isWindows(): ... 

在向前兼容的方式? 如果我必须检查“Vista”之类的东西,那么当下一个版本的Windows出现时,它将会中断。


注:声称这是一个重复的问题的答案实际上不回答isWindows的问题。 他们回答“什么平台”的问题。 由于存在许多isWindows的窗口,因此他们没有全面描述如何得到isWindows的答案。

Python os模块

特别

os.name导入的操作系统相关模块的名称。 以下名称已经被注册:'posix','nt','mac','os2','ce','java','riscos'。

在你的情况下,你想检查'nt'作为os.name输出:

 import os if os.name == 'nt': ... 

你在使用platform.system吗?

 系统()
        返回系统/操作系统名称,例如“Linux”,“Windows”或“Java”。

        如果无法确定值,则返回空string。

如果这不起作用,也许尝试platform.win32_ver ,如果它不引发exception,你在Windows上; 但我不知道这是否向前兼容到64位,因为它的名称中有32个。

 win32_ver(release ='',version ='',csd ='',ptype ='')
        从Windowsregistry中获取其他版本信息
        并返回一个指向版本的元组(version,csd,ptype)
        号码,CSD级别和操作系统types(多/单
        处理器)。

但是os.name可能是其他人所说的方法。


对于什么是值得的,以下是他们在platform.py中检查Windows的一些方法:

 if sys.platform == 'win32': #--------- if os.environ.get('OS','') == 'Windows_NT': #--------- try: import win32api #--------- # Emulation using _winreg (added in Python 2.0) and # sys.getwindowsversion() (added in Python 2.3) import _winreg GetVersionEx = sys.getwindowsversion #---------- def system(): """ Returns the system/OS name, eg 'Linux', 'Windows' or 'Java'. An empty string is returned if the value cannot be determined. """ return uname()[0] 

你应该可以依靠os .name。

 import os if os.name == 'nt': # ... 

编辑:现在我要说的最清楚的方式来做到这一点是通过平台模块,根据其他答案。

在sys中也是这样:

 import sys # its win32, maybe there is win64 too? is_windows = sys.platform.startswith('win') 
 import platform is_windows = any(platform.win32_ver()) 

要么

 import sys is_windows = hasattr(sys, 'getwindowsversion')