Pythonのrunpyモジュールでモジュールを検索・実行する方法
Pythonのコマンドラインオプションである-mオプションは、指定されたモジュールを検索し、__main__モジュールとして実行します。この仕組みは、Python標準ライブラリのrunpyモジュールによって内部的に支えられています。runpyを使うと、ファイルシステムではなくPythonのモジュール名前空間を通じてスクリプトを特定し、実行することができます。
runpyモジュールが定義する2つの関数
run_module()
この関数は、指定されたモジュールのコードを実行し、その結果得られるモジュールのグローバル辞書(globals)を返します。
mod_name引数には絶対モジュール名を指定します。モジュール名が通常のモジュールではなくパッケージを指している場合、そのパッケージがインポートされ、パッケージ内の__main__サブモジュールが実行され、その結果のグローバル辞書が返されます。
モジュールコードが実行される前に、特別なグローバル変数である__name__、__spec__、__file__、__cached__、__loader__、__package__がグローバル辞書に設定されます。
__name__:指定されたモジュールがパッケージの場合はmod_name + '.__main__'に、それ以外の場合はmod_name引数の値に設定されます。__file__、__cached__、__loader__、__package__:モジュールspecに基づいて、通常どおり設定されます。
run_path()
この関数は、指定されたパスにあるファイルのコードを実行し、その結果得られるモジュールのグローバル辞書を返します。指定できるパスは、Pythonソースファイル、コンパイル済みバイトコードファイル、あるいは__main__モジュールを含む有効なsys.pathエントリ(例:トップレベルに__main__.pyを含むzipファイルなど)です。
こちらも同様に、モジュールコードの実行前に__name__、__spec__、__file__、__cached__、__loader__、__package__がグローバル辞書に設定されます。
__name__は、オプション引数run_nameがNoneでない場合にはその値に、そうでない場合には '<run_path>' に設定されます。
実行例
まず、次のスクリプトを runpyexample.py という名前で保存します。
# runpy example
def add(x, y):
return x + y
def main():
x, y = 10, 20
print(add(x, y))
return
if __name__ == '__main__':
main()通常、このスクリプトは次のようにインポートして実行します。
>>> import runpyexample as rp >>> rp.main() 30 >>>
しかし、runpyモジュールを使えば、実際にインポートすることなくスクリプトを実行できます。
>>> import runpy
>>> runpy.run_module('runpyexample', run_name='__main__')
30run_path()関数を使うことも可能です。
>>> runpy.run_path('runpyexample.py', run_name='__main__')
30前述のとおり、runpyはPythonコマンドラインの-mスイッチを支えているため、次のようにコマンドから直接実行することもできます。
E:\python37>python -m runpyexample 30
-
Pythonのgetpassモジュールとは?パスワード入力とユーザー名取得の基本を解説
Pythonの標準ライブラリには、ターミナル上で動作するアプリケーションにおいて、ユーザーの認証情報を検証してから処理を実行したい場合に役立つgetpassモジュールが用意されています。このモジュールには主に2つの関数が定義されており、セキュリティを意識したコマンドラインツールの開発に欠かせない存在です。 getpass() 関数:パスワードを安全に入力する getpass()関数は、ユーザーにパスワードの入力を促すための関数です。デフォルトでは、ターミナルに入力されたキーは画面に表示(エコー)されないため、第三者にパスワードを盗み見られる心配がありません。 また、プロンプトとして表示される
-
PythonのopenpyxlモジュールでExcelファイルを読み書きする方法【初心者向け完全ガイド】
Pythonには、Excelファイル(.xlsx)を操作するためのopenpyxlという便利なモジュールが用意されています。このモジュールを使えば、Excelファイルの新規作成、データの書き込み・読み取り、シートの追加や管理など、さまざまな操作をプログラムから自動的に行うことができます。 本記事では、openpyxlの基本的な使い方を、実際に動作するサンプルコードとともに順番に解説していきます。 openpyxlのインストール方法 openpyxlは標準ライブラリではないため、まずインストールが必要です。コマンドプロンプト(またはターミナル)で以下のコマンドを実行してください。 pip ins