自动化几BASH命令[关闭]

问题描述 投票:-1回答:2

任何“适当”的方式来使用Python为构建脚本自动化?

我希望有我的剧本做这样的事情:

cd /somewhere
git pull
npm run build
make deploy

无处不在谷歌我看到:os.system("xxx")subprocess.call(...)

在BASH,上面是简单的,但我想创造一个CLI Python应用程序创建所有这些东西对我来说。

python python-3.x bash shell automation
2个回答
0
投票

在没有推倒重来的精神,有很多的方式来自动构建与蟒蛇,越来越像依赖关系管理免费的东西。

一个有用的工具是doit

为了得到一个想法,这类似于你的使用情况很简单的例子:

import os

MY_PRJ_ROOT='/home/myname/my_project_dir'

def task_cd():
    def cd_to_somewhere():
        os.chdir(MY_PRJ_ROOT)
    return {
        'actions': [cd_to_somewhere]
    }

def task_git_pull():
    """pull my git repo"""
    return {
        'actions': ['git pull'],
    }

def task_build_rust_app():
    """build by awesome rust app"""
    return {
        'actions': ['cargo build']
    }

上述假设是一个文件名为dodo.py,为DOIT任务的默认名称,运行它:

> doit

其他资源

另外值得一提(据我所知,他们是不是蟒蛇自动化工具详尽的清单):

SCons - a software construction tool

ShutIt - A versatile automation framework


0
投票

os.system致电贝和发送命令到shell,所以你可以很容易地做到这一点:

import os

cmd == """\
cd /somewhere
git pull
npm run build
make deploy
""""

os.system(cmd)

它是那么容易。我们往往忘记了os.system也没有直接执行的命令,但它派遣命令外壳。因此,我们可以使用重定向和管道。

© www.soinside.com 2019 - 2024. All rights reserved.