这是我的文件夹的样子(两个文件夹都有空的__init__.py
文件:
.
├── Filter
│ ├── __init__.py
│ └── stp.py
└── Time
├── __init__.py
└── event.py
在event.py中,我目前拥有(有效):
from Filter.stp import *
但是我想将其更改为(导入整个文件夹,因为实际上还有更多文件):
import Filter
我该怎么做?
答案 0 :(得分:0)
from Filter.stp import *
是否有效?我相信您会遇到找不到模块的错误。这是因为您必须在Filter
文件夹中拥有Time
文件夹。之后,您可以使用import
或from 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.py
和event.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()
我现在无法运行代码,因此它可能并不完美。