Google が作った fire というライブラリを使うと、Python スクリプトを実行する時の引数にメソッドを呼び出せるようになります。 場合によっては便利に使えるので、簡単な使い方をメモしておきます。
fire のインストール
pip
で簡単にインストール出来ます。
pip install fire
six
や termcolor
も一緒にインストールされるようです。
# pip list Package Version ---------- ------- fire 0.2.1 pip 19.3.1 setuptools 42.0.2 six 1.13.0 termcolor 1.1.0
サンプル 1 : 関数を指定して実行する
スクリプト
#!/usr/bin/env python # -*- coding: utf-8 -*- class MyClass(object): def hello(self): print('Hello, World!') if __name__ == '__main__': import fire fire.Fire(MyClass)
実行結果
関数名 (ここでは hello
) を引数にして実行すると、関数の内容が実行されていることが分かります。
# python sample1.py hello
Hello, World!
サンプル 2 : 関数に引数を指定して実行する
スクリプト
#!/usr/bin/env python # -*- coding: utf-8 -*- class MyClass(object): def addition(self, a, b): print(a + b) def subtraction(self, a, b): print(a - b) if __name__ == '__main__': import fire fire.Fire(MyClass)
実行結果
addition(self, a, b)
を呼び出してみると関数内定義の通り、足し算が実行されます。
# python sample2.py addition 5 3 8
subtraction(self, a, b)
を呼び出してみると関数内定義の通り、引き算が実行されます。
# python sample2.py subtraction 5 3 2
サンプル 3 : コンストラクタに引数を渡す
スクリプト
#!/usr/bin/env python # -*- coding: utf-8 -*- class MyClass(object): def __init__(self, message): self.message = message def greet(self): print("Hello, " + self.message + "!") if __name__ == '__main__': import fire fire.Fire(MyClass)
実行結果
引数を渡すことで、コンストラクタにパラメータを渡せます。
# python sample3.py --message='Python World' greet
Hello, Python World!