Linux上で、sudo kill した場合、try/finallyのfinallyがよばれないっぽい。フォアグラウンドで実行してctrl+cした場合は問題ないのですが。。
import sys,signalしといて
def cleanup(*args): sys.exit(0) signal.signal(signal.SIGINT, cleanup) signal.signal(signal.SIGTERM, cleanup)
とか書いておくと、よばれるようになりますが、コレでいいのかな。。。
myutils.py に定義された
def cleanup(xx):
などのメソッドを呼び出すには、呼び出し側で
from myutils import cleanup,sysout
と宣言しておけば、
cleanup("hoge")
などと直接呼び出せる。
PythonにはJavaでいう
public static void main(String[] args){ ... }
みたいな概念がなく、
sudo python3 xxx.py
と呼び出すと、先頭から順次実行されるっぽい。
いわゆるmainメソッドを作るやり方は以下の通りです。
import sys def main(args): メイン処理 if __name__ == "__main__": main(sys.argv)
「 __name__ 」 には、スクリプトとして直接呼び出されたときのみ*1、"__main__" と入っているらしいので、それを判定して main メソッドを呼び出すとすれば public static void main の完成です。ついでにコマンドライン引数を上記のように渡せば、引数も同様にJavaぽくあつかうことができます。あ、引数は0番目はプログラム名なので、1番目からが実際の引数です。
参考
この記事は
現在のアクセス:4684