Top / Python / TIPS集

finallyがよばれない??

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")

などと直接呼び出せる。

public static void main ぽく書きたい

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番目からが実際の引数です。

参考


この記事は

選択肢 投票
おもしろかった 0  
そうでもない 0  

Top / Python / TIPS集

現在のアクセス:4684


*1 よするに sudo python3 xxx.py てこと

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS