简介
在本文中,我们将探讨如何在 Python 中从同级目录(Sibling Directory)导入文件。我们将首先在根文件夹下创建两个文件夹,并在每个文件夹中各创建一个 Python 文件。目录结构如下所示:
目录结构
Directory Tree:
root :
| |__SiblingA:
| \__A.py
| |__SiblingB:
| \__B.py
在这个结构中,我们将在 INLINECODE629b5e3f 里创建一个简单的函数,然后在 INLINECODEce60974f 中导入这个同级模块并调用 B.py 中创建的函数。
为了在 INLINECODE158ca59d 中导入同级模块,我们需要指定父目录的路径。这可以通过使用 INLINECODEb8ebfbe4 模块中的 INLINECODEd0723d28 方法来实现。在 INLINECODEadf74960 方法中传入 INLINECODEda88fd24,将会把 INLINECODEd8d8c578 的父目录路径添加到系统路径中。
A.py 代码:
# 导入所需模块
import sys
# 将父目录的路径添加到系统路径中
sys.path.append("..")
# 从同级模块导入方法
from SiblingB.B import methodB
# 调用方法
s = methodB()
print(s)
B.py 代码:
# 定义方法以供 A.py 导入,
# 该方法返回一个字符串
def methodB():
return "
This is methodB from SiblingB"
执行结果
运行 A.py 后的输出如下:
INLINECODE9b104d4b 被执行,且 INLINECODE4498427a 被成功调用。
注意: 我们不能像 INLINECODEf7a1e4c7 这样直接在 INLINECODEe9574598 中导入 INLINECODEaed4f5ba,这样做会引发错误:INLINECODE1fecf5ec。这是因为如果文件夹中没有定义 __init__.py,Python 就不会将当前工作目录视为一个包。
—
方法二:使用 init.py 创建包
另一种执行相同任务的类似方法是,通过在文件夹中放入 INLINECODE53a625bf 文件将同级目录变成一个包(Package),然后从同级目录导入它。INLINECODE57047b6f 可以用来将所需的方法暴露给其他模块。
目录树如下所示:
目录结构
Directory Tree:
root :
| |__SiblingA:
| \__A.py
| |__SiblingB:
| \__ __init__.py
| \__B.py
|
A.py 代码:
# 导入所需模块
import sys
# 将父目录的路径添加到系统路径中
sys.path.append("..")
# 从同级模块导入方法
# 注意:因为 __init__.py,我们可以直接从包导入
from SiblingB import methodB
# 调用方法
s = methodB()
print(s)
init.py 代码:
# 从 .fileName import methodName
from .B import methodB
B.py 代码:
# 定义方法以供 A.py 导入,
# 该方法返回此字符串
def methodB():
return "
This is methodB from SiblingB"
执行结果
运行 A.py 后的输出如下:
注意: 一旦 __init__.py 被放置在文件夹中,该文件夹在 Python 中现在就充当了一个包。