我正在尝试通过Python脚本确定操作系统是否基于Unix.我可以想到两种方法,但它们都有缺点:
platform.system()在元组中("Linux", "Darwin").这个问题是我不想提供每个类似Unix系统的列表,特别是有许多*BSD变种.os.fchmod存在,因为此函数仅在Unix上可用.这似乎不是干净或"Pythonic"的方式.Pythonic的做法是不关心你所处的平台.
如果有多种不同的设施可以根据平台完成某些任务,那么在功能或类后面抽象它们,如果当前平台上没有该设施,它应该尝试设施并转移到另一个设施.
import sys
if 'win' in sys.platform():
#windows
else:
#not windows
Run Code Online (Sandbox Code Playgroud)
或者,您可以尝试导入平台相关库
try:
import windows_only as generic
except ImportException:
try:
import unix_only as generic
except ImportException:
import stdlib.module as generic
print generic.common_function()
Run Code Online (Sandbox Code Playgroud)
然后总是可靠的
>>> import os
>>> os.name
nt
Run Code Online (Sandbox Code Playgroud)