我想知道是否可以从文件夹中导入所有 Python 文件,还是需要单独导入每个文件?我建立了一个项目,其中有一个文件夹“website_functions”,其中包含 20 个 Python 文件。它们每个都包含一个功能(我使用 Selenium 访问不同的网站,每个文件对应一个网站)。不必单独导入它们会使其更快。
预先感谢您的回答
是的,这是可能的。在您要导入的文件夹满档,指定在一个名为列表中的所有文件名__all__
中__init__.py
的文件。从您希望将文件导入到的程序中,您现在可以使用from directory import *
.
考虑以下示例。
项目目录结构:
.
|-- main.py
`-- modules
|-- __init__.py
|-- f.py
`-- g.py
1 directory, 4 files
主文件
from modules import *
f.f1()
f.f2()
g.g1()
g.g2()
模块/f.py
def f1():
print("This is f1() from modules/f.py.")
def f2():
print("This is f2() from modules/f.py.")
模块/g.py
def g1():
print("This is g1() from modules/g.py.")
def g2():
print("This is g2() from modules/g.py.")
模块/__init__.py
__all__ = ["f", "g"]
main.py 的输出如下。
This is f1() from modules/f.py.
This is f2() from modules/f.py.
This is g1() from modules/g.py.
This is g2() from modules/g.py.
如果您希望每次运行程序时都自动生成__all__
列表 in __init__.py
,则可以使用该os
库来实现。例如:
(我已经从这个例子中删除了 f.py 以免干扰 . 的f
属性modules
。)
模块/__init__.py
import os
__all__ = []
dirname = os.path.dirname(os.path.abspath(__file__))
for f in os.listdir(dirname):
if f != "__init__.py" and os.path.isfile("%s/%s" % (dirname, f)) and f[-3:] == ".py":
__all__.append(f[:-3])
主文件
from modules import *
g.g1()
g.g2()
main.py 的输出如下。
This is g1() from modules/g.py.
This is g2() from modules/g.py.
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句