如何确定运行Python脚本的操作系统是否类似于Unix?

use*_*730 4 python unix

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

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

cdh*_*wie 7

Pythonic的做法是不关心你所处的平台.

如果有多种不同的设施可以根据平台完成某些任务,那么在功能或类后面抽象它们,如果当前平台上没有该设施,它应该尝试设施并转移到另一个设施.


bla*_*kev 7

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)