[解決済み] Pythonで、インポートされたモジュールのmain()を呼び出すことはできますか?
質問
Pythonで、私は モジュール myModule.py でいくつかの関数と main() で、いくつかのコマンドライン引数を取ります。
私は通常、bashスクリプトからこのmain()を呼び出します。さて、私はすべてを小さな パッケージ というわけで、私の簡単なbashスクリプトをPythonスクリプトに変換してパッケージに入れることができるかもしれないと思いました。
では、実際にどのように main()を呼び出します。 関数を呼び出すことができます。 をmain()関数から呼び出します。 を使うのですか?そんなことできるの? どのように任意の 引数を渡すには? を渡すのでしょうか?
どのように解決するのですか?
これは単なる関数です。インポートして呼び出してください。
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__
という変数が設定され、それに対してテストすることで、コードがどのように実行されたかを知ることができます。
関連
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonの辞書からキーを削除するにはどうしたらいいですか?
-
[解決済み] Pythonでシングルトンを作成する
-
[解決済み] 億の相対的輸入
-
[解決済み] ローカルにインストールされたPythonモジュールの一覧を取得するにはどうしたらいいですか?
-
[解決済み] Pythonモジュールをアンロード(再ロード)するにはどうしたらいいですか?
-
[解決済み] PythonモジュールとPythonパッケージの違いは何ですか?
-
[解決済み] モジュール名を文字列で指定してインポートするには?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み] Python の sorted() はどのようなアルゴリズムを使っているのですか?重複
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ある Python ファイルを別のファイルに実行させるにはどうしたらいいですか?[重複]。
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
-
[解決済み] dict を txt ファイルに書き、それを読み取る?
-
[解決済み] SQLAlchemy: 日付フィールドをフィルタリングする方法は?
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] PythonからSMTPを使用してメールを送信する
-
[解決済み] スペースがないテキストを単語のリストに分割する方法
-
[解決済み] 異なる順序で同じ要素を持つ2つのJSONオブジェクトを等しく比較するには?
-
[解決済み] Django で全てのリクエストヘッダを取得するにはどうすれば良いですか?
-
[解決済み] Pythonの文字列の前にあるbという接頭辞は何を意味するのですか?