PythonではモジュールmyModule.pyではいくつかの関数と主要()これにはいくつかのコマンドライン引数が必要です。
私は通常、このmain()をbashスクリプトから呼び出します。今、私はすべてを小さなパッケージそこで、単純な bash スクリプトを Python スクリプトに変換してパッケージに入れることができるのではないかと考えました。
では、実際にどうすればmain() を呼び出すmyModule.py の関数main()関数からMyFormerBashScript.pyの?そんなことできるの?議論それに?
ベストアンサー1
これは単なる関数です。インポートして呼び出します:
import myModule
myModule.main()
引数を解析する必要がある場合は、次の 2 つのオプションがあります。
で解析しますが、パラメータとして
main()
渡します(以下のすべてのコードは同じモジュール内にあります)。sys.argv
myModule
def main(args): # parse arguments using optparse or argparse or what have you if __name__ == '__main__': import sys main(sys.argv[1:])
myModule.main(['arg1', 'arg2', 'arg3'])
これで、他のモジュールからインポートして呼び出すことができます。main()
すでに解析されているパラメータを受け入れます (ここでもモジュール内のすべてのコードmyModule
):def main(foo, bar, baz='spam'): # run with already parsed arguments if __name__ == '__main__': import sys # parse sys.argv[1:] using optparse or argparse or what have you main(foovalue, barvalue, **dictofoptions)
必要に応じて、他の場所でインポートして呼び出し
myModule.main(foovalue, barvalue, baz='ham')
、Python 引数を渡します。
ここでの秘訣は、モジュールがスクリプトとして使用されているかどうかを検出することです。Python ファイルをメイン スクリプトとして実行すると ( python filename.py
)、import
ステートメントは使用されないままなので、Python はそのモジュールを呼び出します"__main__"
。ただし、同じfilename.py
コードがモジュールとして扱われると ( import filename
)、Python はそれをモジュール名として使用します。どちらの場合も変数__name__
が設定されており、それに対してテストすると、コードがどのように実行されたかがわかります。