我正在尝试通过 Python 脚本确定操作系统是否基于 Unix。我可以想到两种方法来做到这一点,但它们都有缺点:
- 检查是否
platform.system()
在元组中,例如("Linux", "Darwin")
. 这样做的问题是我不想提供每个制造的每个类 Unix 系统的列表,特别是有许多 *BSD 变体。 - 检查该函数是否
os.fchmod
存在,因为该函数仅在 Unix 上可用。这似乎不是一种干净或“Pythonic”的方式。
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
Pythonic 的做法是不关心你在什么平台上。
如果根据平台有多个不同的工具来完成某事,那么将它们抽象到一个函数或类后面,如果该工具在当前平台上不可用,它应该尝试一个工具并转移到另一个工具。