2016-03-27 23 views
1

コマンドラインの代わりにスクリプトからこの関数を実行したいと思います。たとえば、関数は次のとおりです。コマンドラインで実行するスクリプトからPython関数を呼び出す方法

def main(): 
    parser = argparse.ArgumentParser(description='Caffe prototxt to mxnet model parameter converter.\ 
        Note that only basic functions are implemented. You are welcomed to contribute to this file.') 
    parser.add_argument('caffe_prototxt', help='The prototxt file in Caffe format') 
    parser.add_argument('caffe_model', help='The binary model parameter file in Caffe format') 
    parser.add_argument('save_model_name', help='The name of the output model prefix') 
    args = parser.parse_args() 
    ... 

どうすればこのように実行できますか?

なぜ、誰かがコマンドラインからしか実行できない関数を書いていますか?それは不便だと感じています。

+0

この関数は、 'if name == '__main __''の下にコードを書くのが悪いために書かれています。 – wRAR

+0

こんにちは@wARAR、なぜ私はそれを読んで参照する必要がありますか?どうもありがとう。 – user2014905

+0

これは簡単です。別の場所から呼び出す必要があるときに、別の関数で書かれたコードと同じように、 'if name == '__main __''の下に書かれたコードを簡単に呼び出すことはできません。 – wRAR

答えて

3

あなたはsys.argvを使用することができます。

import sys 

sys.argv.extend(['file_1.csv', 'file_2.csv', 'name']) 
file.main() 
0

おそらく小さな光のリファクタリングをしたいです。​​の内容を独自のメソッドに引き出し、main(args)を呼び出して、argparse.Namespace()をインスタンス化して、コンフィグレーションでmainに渡します。

はい、私はコードがすでにこのように因数分解されていれば、コードが良くなると思います。しかし、人々はその当面のニーズを満たすために実用的にコードを作成します。

関連する問題