ディレクトリ配下のすべてのファイルをimportする
Pythonであるフォルダにすべてのファイルをimportする方法
Pythonでは別のスクリプト (例: mod_a.py
)をimport mod_a
などとして利用することが出来ますが、例えばpackage_a/
ディレクトリにあるファイルをすべて読み込もうと from package_a import *
としても読み込むことはできません。
この場合__init__.py
ファイルを準備する必要があります。例えば以下のようなファイル構成を考えます
/
main.py
package_a/
__init__.py
mod_a.py
mod_b.py
main.py
から from package_a import *
として読み込むためには、__init__.py
の中で__all__
という変数に、*
で読み込むモジュール名を設定します。
__all__ = ['mod_a', 'mod_b']
また、すべてのファイルを読み込みたいときはos.listdir()
を使用して
import os
__all__ = [k[0:-3] for k in filter(lambda x: x[0] != "_",
os.listdir(os.path.dirname(__file__)))]
のように設定します。この時__init__.py
自身や自動で生成される__pycache__
を含めないように、最初の文字が_
の文字列をfilter()
を用いて除外しています。k[0:-3]
はファイ名の.py
を削除するためです
最近のコメント