我需要看些什么来确定我使用的是Windows还是Unix等等?
当前回答
我知道这是一个老问题,但我相信我的答案可能会对那些正在寻找一种简单易懂的python方法来检测代码中的操作系统的人有所帮助。在python3.7上测试
from sys import platform
class UnsupportedPlatform(Exception):
pass
if "linux" in platform:
print("linux")
elif "darwin" in platform:
print("mac")
elif "win" in platform:
print("windows")
else:
raise UnsupportedPlatform
其他回答
有很多方法可以找到这个最简单的方法就是使用OS包
import os
print(os.name)
如果你运行macOS X并运行platform.system(),你会得到darwin 因为macOS X是基于苹果的达尔文操作系统构建的。Darwin是macOS X的内核,本质上是没有GUI的macOS X。
/usr/bin/python3.2
def cls():
from subprocess import call
from platform import system
os = system()
if os == 'Linux':
call('clear', shell = True)
elif os == 'Windows':
call('cls', shell = True)
短篇小说
使用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。
这个解决方案适用于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()