python:根据操作系统使用不同的函数

2024-04-23

我想编写一个可以在 Linux 和 Solaris 上执行的脚本。大多数逻辑在两种操作系统上都是相同的,因此我只编写一个脚本。但由于某些部署的结构会有所不同(文件位置、文件格式、命令语法),因此两个平台上的一些功能会有所不同。

这可以像这样处理

if 'linux' in sys.platform:
    result = do_stuff_linux()
if 'sun' in sys.platform:
    result = do_stuff_solaris()
more_stuf(result)
...

然而撒上这些似乎又麻烦又不优雅ifs贯穿整个代码。我也可以在一些中注册函数dict然后通过字典调用函数。大概会好一点吧。

关于如何做到这一点有更好的想法吗?


解决方案一:

您为需要复制的每个函数创建单独的文件并导入正确的函数:

import sys
if 'linux' in sys.platform:
    from .linux import prepare, cook
elif 'sun' in sys.platform:
    from .sun import prepare, cook
else:
    raise RuntimeError("Unsupported operating system: {}".format(sys.platform))

dinner = prepare('pork')
drink_wine()
result = cook(dinner)

解决方案1.5:

如果您需要将所有内容保存在一个文件中,或者只是不喜欢条件导入,您始终可以为函数创建别名,如下所示:

import sys

def prepare_linux(ingredient):
    ...

def prepare_sun(ingredient):
    ...

def cook_linux(meal):
    ...

def cook_sun(meal):
    ...

if 'linux' in sys.platform:
    prepare = prepare_linux
    cook = cook_linux
elif 'sun' in sys.platform:
    prepare = prepare_sun
    cook = cook_sun
else:
    raise RuntimeError("Unsupported operating system: {}".format(sys.platform))

dinner = prepare('chicken')
drink_wine()
result = cook(dinner)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python:根据操作系统使用不同的函数 的相关文章

随机推荐