Search on the blog

2016年6月13日月曜日

便利なPythonライブラリ(6)Invoke

Invokeとは?
Pythonのタスク実行ツールです。
ビルドツールのmakeやRubyのRakeのようなものをPythonで実現できます。
公式ページ: http://www.pyinvoke.org/

サンプル
以下のようなPythonスクリプトをtasks.pyという名前で保存しておきます。
ファイル名はtasks.pyでなければなりません。

from invoke import task, run

@task
def startjob(ctx, taskname, verbose=False, iteration=10):
    print ("starting job...")
    print ("taskname = %s" % taskname)
    print ("verbose = %s" % verbose)
    print ("iteration = %d" % iteration)
    run("ls -l | head -n 5")
    print ("completing job...")

実行例
シェルからinvoke(省略してinvでも可)と入力することで、@taskデコレータが付与された処理を呼び出すことができます。

まずは、実行可能なタスク一覧を表示してみる。
$ inv --list
Available tasks:

  startjob

startjobタスクのhelp表示。
$ inv --help startjob
Usage: inv[oke] [--core-opts] startjob [--options] [other tasks here ...]

Docstring:
  none

Options:
  -i, --iteration
  -t STRING, --taskname=STRING
  -v, --verbose

startjob実行。
$ inv startjob tasks1
starting job...
taskname = tasks1
verbose = False
iteration = 10
total 96
-rw-r--r--  1 kenjih  staff   134  4  2 00:39 counter.py
drwxr-xr-x@ 5 kenjih  staff   170 11 30  2009 examples
-rw-r--r--  1 kenjih  staff   296  4  9 19:46 groupby.py
-rw-r--r--  1 kenjih  staff    95 11 21  2015 hoge.py
completing job...

オプション指定(省略形で指定)。
$ inv startjob tasks1 -v -i 200
starting job...
taskname = tasks1
verbose = True
iteration = 200
total 96
-rw-r--r--  1 kenjih  staff   134  4  2 00:39 counter.py
drwxr-xr-x@ 5 kenjih  staff   170 11 30  2009 examples
-rw-r--r--  1 kenjih  staff   296  4  9 19:46 groupby.py
-rw-r--r--  1 kenjih  staff    95 11 21  2015 hoge.py
completing job...

オプション指定(非省略形で指定)。
$ inv startjob tasks1 --verbose --iteration 300
starting job...
taskname = tasks1
verbose = True
iteration = 300
total 96
-rw-r--r--  1 kenjih  staff   134  4  2 00:39 counter.py
drwxr-xr-x@ 5 kenjih  staff   170 11 30  2009 examples
-rw-r--r--  1 kenjih  staff   296  4  9 19:46 groupby.py
-rw-r--r--  1 kenjih  staff    95 11 21  2015 hoge.py
completing job...

0 件のコメント:

コメントを投稿