Isa*_*aac 3 python cross-platform
我想编写一个可以在 Linux 和 Solaris 上执行的脚本。大多数逻辑在两个操作系统上都是相同的,因此我只编写了一个脚本。但是因为一些部署的结构会有所不同(文件位置、文件格式、命令语法),所以两个平台上的一些功能会有所不同。
这可以像这样处理
if 'linux' in sys.platform:
result = do_stuff_linux()
if 'sun' in sys.platform:
result = do_stuff_solaris()
more_stuf(result)
...
Run Code Online (Sandbox Code Playgroud)
然而,ifs在整个代码中散布这些似乎既麻烦又不优雅。我也可以在某些中注册函数dict,然后通过 dict 调用函数。大概好看一点。
关于如何做到这一点的任何更好的想法?
解决方案1:
您为需要复制和导入正确的每个功能创建单独的文件:
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)
Run Code Online (Sandbox Code Playgroud)
解决方案 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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1347 次 |
| 最近记录: |