[英]how to import all files from different folder in Python
使用目錄中的__init__.py
,我可以通過以下方式導入它
from subdirectory.file import *
但我希望導入該子目錄中的每個文件; 所以我試過了
from subdirectory.* import *
這不起作用。 有什么建議嗎?
如果您有以下結構:
$ tree subdirectory/
subdirectory/
├── file1.py
├── file2.py
└── file3.py
並且您希望程序自動選取位於此subdirectory
每個模塊並以某種方式對其進行處理,您可以按如下方式實現它:
import glob
# Get file paths of all modules.
modules = glob.glob('subdirectory/*.py')
# Dynamically load those modules here.
有關如何動態加載模塊,請參閱此問題。
在您的subdirectory/__init__.py
您可以通過以下方式導入所有本地模塊:
from . import file1
from . import file2
# And so on.
您可以通過以下方式導入本地模塊的內容
from .file1 import *
# And so on.
然后您可以通過以下方式導入這些模塊(或內容)
from subdirectory import *
使用__init__.py
__all__
屬性,您可以控制在from ... import *
語句期間將from ... import *
。 因此,如果您不想導入file2.py
,例如,您可以執行以下操作:
__all__ = ['file1', 'file3', ...]
您可以通過訪問這些模塊
import subdirectory
from subdirectory import *
for name in subdirectory.__all__:
module = locals()[name]
在嘗試了一些不同的解決方案后找到了這個方法(如果相鄰目錄中有一個名為“folder”的文件夾):
for entry in os.scandir('folder'):
if entry.is_file():
string = f'from folder import {entry.name}'[:-3]
exec (string)
您的__init__.py
文件應如下所示:
from file1 import *
from file2 import *
然后你可以這樣做:
from subdirectory import *
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.