やりたいこと
コマンドライン引数で毎回値を打つのがめんどくさいので、コンフィグファイルを用意して引数を管理します。
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で実行引数を別ファイルで管理しました。
コメント