【Python】引数を別ファイルで管理する【importlib.import_module】

Python

やりたいこと

コマンドライン引数で毎回値を打つのがめんどくさいので、コンフィグファイルを用意して引数を管理します。

Pythonの標準モジュールimportlib.import_moduleを使用します。

サンプルコード

コンフィグファイル(conf.py)
data = "Hello"
実行ファイル(sample.py)
from importlib import import_module
import sys
import os

args = sys.argv[1]  # conf.pyをargsに代入。
tmp = sys.path  # importディレクトリをtmpに一時保存。
sys.path = [os.path.dirname(os.path.abspath(args))]  # conf.pyのディレクトリを代入。
module = import_module(os.path.splitext(os.path.basename(args))[0])  # conf.pyをimport。
sys.path = tmp  # importディレクトリを元に戻す。
print(module.data)
実行
python ./sample.py ./conf.py
# 出力
# Hello

解説

importlibのimport_moduleをインポートします。

from importlib import import_module

import_module(<モジュール名>)で<モジュール名>のファイルをインポートできます。

./conf.pyから拡張子(.py)やセパレータ(./)を削除するために
os.path.splitext, os.path.basenameを使用しています。

module = import_module(os.path.splitext(os.path.basename(args))[0])

module.dataでconf.pyにあるdataの値を呼び出すことができます。

print(module.data)
# 出力
# Hello

まとめ

import_moduleで実行引数を別ファイルで管理しました。

コメント

タイトルとURLをコピーしました