簡體   English   中英

如何從Python中的不同文件夾導入所有文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM