我需要看些什么来确定我使用的是Windows还是Unix等等?
当前回答
这个解决方案适用于python和jython。
模块os_identify.py:
import platform
import os
# This module contains functions to determine the basic type of
# OS we are running on.
# Contrary to the functions in the `os` and `platform` modules,
# these allow to identify the actual basic OS,
# no matter whether running on the `python` or `jython` interpreter.
def is_linux():
try:
platform.linux_distribution()
return True
except:
return False
def is_windows():
try:
platform.win32_ver()
return True
except:
return False
def is_mac():
try:
platform.mac_ver()
return True
except:
return False
def name():
if is_linux():
return "Linux"
elif is_windows():
return "Windows"
elif is_mac():
return "Mac"
else:
return "<unknown>"
像这样使用:
import os_identify
print "My OS: " + os_identify.name()
其他回答
短篇小说
使用platform.system()。它返回Windows、Linux或Darwin(适用于OSX)。
很长的故事
Python中有3种操作系统,每种方法都有其优缺点:
方法1
>>> import sys
>>> sys.platform
'win32' # could be 'linux', 'linux2, 'darwin', 'freebsd8' etc
它是如何工作的(来源):在内部调用OS api来获得OS定义的OS名称。有关各种特定于操作系统的值,请参见这里。
教授:没有魔法,低水平。
缺点:依赖于操作系统版本,所以最好不要直接使用。
方法2
>>> import os
>>> os.name
'nt' # for Linux and Mac it prints 'posix'
它是如何工作的(源代码):它在内部检查python是否有名为posix或nt的特定于操作系统的模块。
优点:简单检查是否posix操作系统
缺点:Linux和OSX之间没有区别。
方法3
>>> import platform
>>> platform.system()
'Windows' # for Linux it prints 'Linux', Mac it prints `'Darwin'
这是如何工作的(来源):在内部,它最终会调用内部的操作系统api,获得特定于操作系统版本的名称,如'win32'或'win16'或'linux1',然后通过应用一些启发式方法规范化为更通用的名称,如'Windows'或'Linux'或'Darwin'。
优点:Windows, OSX和Linux的最佳便携方式。
缺点:Python人员必须保持规范化启发式是最新的。
总结
如果你想检查操作系统是Windows还是Linux或OSX,那么最可靠的方法是platform.system()。 如果你想通过内置的Python模块posix或nt进行特定于操作系统的调用,则使用os.name。 如果你想获得OS本身提供的原始OS名称,那么使用sys.platform。
你也可以使用sys。平台,如果你已经导入了sys,你不想导入另一个模块
>>> import sys
>>> sys.platform
'linux2'
下面是Mac上的测试结果:
>>> import os
>>> os.name
'posix'
>>> import platform
>>> platform.system()
'Darwin'
>>> platform.release()
'8.11.1'
像下面这样一个简单的Enum实现怎么样?不需要外部库!
import platform
from enum import Enum
class OS(Enum):
def checkPlatform(osName):
return osName.lower()== platform.system().lower()
MAC = checkPlatform("darwin")
LINUX = checkPlatform("linux")
WINDOWS = checkPlatform("windows") #I haven't test this one
简单地,您可以使用Enum值访问
if OS.LINUX.value:
print("Cool it is Linux")
附注:它是python3
如果你在Windows上使用Cygwin操作系统的os.name是posix,请注意。
>>> import os, platform
>>> print os.name
posix
>>> print platform.system()
CYGWIN_NT-6.3-WOW