【问题标题】:Run OS native commands VS Python's in Fabric在 Fabric 中运行 OS 本机命令 VS Python
【发布时间】:2012-11-18 15:32:59
【问题描述】:

我正在使用 Fabric 进行项目管理、部署等。我不太了解更方便的运行命令的方式。例如,考虑到我不关心 Fabric local 函数的 captureshell 参数,以下哪些是优缺点?

os.mkdir(path)

VS

local("mkdir %s" % path)

【问题讨论】:

  • 我会说local("mkdir %s" % path) 不太健壮,因为您没有处理带有空格和/或奇怪字符的路径,而os.mkdir 应该自动处理它们。但我不知道这对你是否重要。

标签: python command fabric


【解决方案1】:

根据您的项目目标,任何一种都可能更合适。这里有一些优点和缺点。

  • python 标准库函数的优点
    • 跨平台兼容
    • 通常效率更高,因为没有创建子进程
    • 总体上不太复杂,因为涉及的模块、进程、移动部件、shell 解析等更少(因此也更容易调试)
  • 面料的优点local
    • 随着项目的变化,更容易在 localrunsudo 之间切换
    • 更符合runsudo

我认为可以使用标准库函数轻松表示的简单local 命令应该只使用标准库作为默认选择来编写,因为它的复杂性较低。逐个案例,我会问自己哪个更有可能:在不同的操作系统上运行这个fabfile.py 程序,或者将此命令从本地命令转换为远程命令,然后编码为对local 的调用,如果后者更有可能。

【讨论】:

    【解决方案2】:

    使用操作系统本机命令意味着您可以将它们作为参数传递给localrun。这更加一致和灵活。

    【讨论】:

      【解决方案3】:

      already mentioned 是一些优点,但我认为使用 local(和朋友)的另一个优势是非 Python 人员可以更轻松地看到发生了什么。

      【讨论】:

        猜你喜欢
        • 2016-12-30
        • 2019-08-18
        • 2012-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多