我正在尝试从Python脚本确定操作系统是否基于Unix。我可以想到两种方法,但它们都有缺点:
platform.system()
是否在("Linux", "Darwin")
等元组中。这个问题是我不想提供每个类似Unix系统的列表,特别是有很多* BSD变种。os.fchmod
是否存在,因为此函数仅在Unix上可用。这似乎不是干净或“Pythonic”的方式。答案 0 :(得分:7)
import sys
if 'win' in sys.platform():
#windows
else:
#not windows
或者,您可以尝试导入平台相关库
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()
然后总是可靠的
>>> import os
>>> os.name
nt
答案 1 :(得分:6)
Pythonic的做法是不关心你所处的平台。
如果有多种不同的设施可以根据平台完成某些任务,那么在函数或类后面抽象它们,如果当前平台上没有该设施,它应该尝试设备并转移到另一个设施。