2012-04-08 4 views
2

私はしばしばデータ解析スクリプトを書く必要があります。私は、モジュールとスタンドアロンスクリプトの2通りの方法でスクリプトを実行できるようにしたいと考えています。したがって、たとえば:Pythonスクリプトを直接実行するよりも、インポート時の動作が異なるようにすることはできますか?

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.pyを実行することができ、それは私のHypotheticalCommandLineOnlyHappyMagicFunctionを実行するだろうとされてjsonとしてデータを標準出力にシャントします。これはPythonでこれを行う方法はありますか?

答えて

13

これを行うための標準的な方法は、スクリプトは、このif後のコードはモジュールがある場合に実行されることはありません

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

により、スタンドアロン呼び出されたときにのみ実行をする必要があり、コードを守るためであります輸入された。

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

関連する問題