我如何检查我是否在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')