我对Python领域还很陌生,想知道是否有人可以解释这一行代码?
我知道它会将目标文件的目录添加到sys.path中,但是不知道它是怎么回事。
sys.path.append(os.path.dirname(os.path.dirname(__file__)))
答案 0 :(得分:1)
让我们开始解释一些事情:
__file__
是Python内置的。它产生当前执行脚本的绝对路径。
os.path.dirname
返回给定路径名的目录,例如如果给定输入/a/b/c/d
,它将产生/a/b/c
。
sys.path
是当您尝试导入内容时Python将用于搜索模块的目录列表。
os.path.dirname(__file__)
返回正在执行的当前脚本的父目录(即../
)
os.path.dirname(os.path.dirname(__file__))
返回正在执行的当前脚本的父目录的父目录。 (即../../
)
os.path.append(os.path.dirname(os.path.dirname(__file__)))
将注册当前执行脚本的父目录的父目录作为查找新模块的位置。
因此,假设我们具有以下目录结构:
a
|- b
|- c
|-----d
| |----e
| | |---- f
| | | |- main.py
| | |- bar.py
| |- foo.py
|- foobar.py
提供包含此代码的脚本为main.py
,则最终结果将为sys.path.append('/a/d/e')
,因此您可以执行import bar
(但不能执行import foo
或import foobar
)