5

我正在尝试通过 Python 脚本确定操作系统是否基于 Unix。我可以想到两种方法来做到这一点,但它们都有缺点:

  • 检查是否platform.system()在元组中,例如("Linux", "Darwin"). 这样做的问题是我不想提供每个制造的每个类 Unix 系统的列表,特别是有许多 *BSD 变体。
  • 检查该函数是否os.fchmod存在,因为该函数仅在 Unix 上可用。这似乎不是一种干净或“Pythonic”的方式。
4

2 回答 2

8
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
于 2013-08-27T22:44:28.840 回答
6

Pythonic 的做法是不关心你在什么平台上。

如果根据平台有多个不同的工具来完成某事,那么将它们抽象到一个函数或类后面,如果该工具在当前平台上不可用,它应该尝试一个工具并转移到另一个工具。

于 2013-08-27T18:37:01.313 回答