2

データ解析スクリプトを書かなければならないことがよくありますが、それらを 2 つの異なる方法 (モジュールとスタンドアロン スクリプト) で実行できるようにしたいと考えています。たとえば、次のようになります。

def parseData(filename):
    # data parsing code here
    return data

def HypotheticalCommandLineOnlyHappyMagicFunction():
    print json.dumps(parseData(sys.argv[1]), indent=4)

ここでのアイデアは、別の python スクリプトで呼び出してスクリプトでimport dataparserアクセスできるdataParser.parseDataか、コマンドラインで実行するだけで実行できpython dataparser.pyHypotheticalCommandLineOnlyHappyMagicFunctionデータを json として stdout にシャントするというものです。Pythonでこれを行う方法はありますか?

4

1 に答える 1

13

これを行う標準的な方法は、スクリプトがスタンドアロンで呼び出されたときにのみ実行されるコードを保護することです。

if __name__ == "__main__":
    # Your main script code

モジュールがインポートされている場合、この後のコードifは実行されません。

__name__特殊変数には、現在のモジュールの名前が文字列として含まれています。ファイルが と呼ばれる場合、ファイルglonk.pyがモジュールとしてインポートされた場合は になり、ファイルがスタンドアロン スクリプトとして実行された場合は になります。__name__"glonk""__main__"

于 2012-04-08T17:28:47.657 に答える