如何将整个文件夹导入另一个?

时间:2020-06-02 09:09:37

标签: python import module package

这是我的文件夹的样子(两个文件夹都有空的__init__.py文件:

.
├── Filter
│   ├── __init__.py
│   └── stp.py
└── Time
    ├── __init__.py
    └── event.py

在event.py中,我目前拥有(有效):

from Filter.stp import *

但是我想将其更改为(导入整个文件夹,因为实际上还有更多文件):

import Filter

我该怎么做?

3 个答案:

答案 0 :(得分:0)

from Filter.stp import *是否有效?我相信您会遇到找不到模块的错误。这是因为您必须在Filter文件夹中拥有Time文件夹。之后,您可以使用importfrom import

但是,如果无法跨文件夹移动,则必须将路径(例如C:/.../ Filter)添加到Filter文件夹中

import sys
sys.path.append('C:/.../Filter') # include the full path 

import stp # now you can import all the modules inside Filter

答案 1 :(得分:0)

假设stp.pyevent.py文件包含以下内容:

# Filter/stp.py
a = 3
b = 4

# Time/event.py
class Event:
    pass

然后您可以将这些值导入各自的__init__.py文件中:

# Filter/__init__.py
from Filter.stp import a, b

# Time/__init__.py
from Time.event import Event

通过使用此设置,您可以拥有一个如下所示的主文件:

import Filter
import Time

if __name__ == '__main__':
    print(Filter.a)  # 3
    print(Time.Event) # <class 'Time.event.Event'>

答案 2 :(得分:0)

这可能不是最佳解决方案。

您需要导入__init__.py foder目录中的所有文件。但由于目录中有许多文件,因此无法手动导入它们。

因此,我们必须以编程方式编辑__ini__.py

import sy
path = "relative path to dir" 
files = os.listdir(path ) # i am assuming you only have the .py files you want to import
 files.pop('__init__.py')
import_file = open (path + '__init__.py', 'w+')
for f in files:
    import_file.write("import " + f.strip(".py") + "\n" )
import_file.close()

我现在无法运行代码,因此它可能并不完美。