不明白 os.path.dirname() 是如何工作的

Don't understand how os.path.dirname() work

我是 Python 世界的新手,想知道是否有人可以解释这行代码?

我知道它把目标文件的目录添加到sys.path,但不知道它是怎么回事。

sys.path.append(os.path.dirname(os.path.dirname(__file__)))

让我们从解释一些事情开始:

  • __file__ 是一个 Python 内置。它产生当前执行脚本的绝对路径。

  • os.path.dirname returns 给定路径名的目录,例如如果给定输入 /a/b/c/d,它将产生 /a/b/c.

  • sys.path 是一个目录列表,Python 将在您尝试导入某些内容时用于搜索模块。


os.path.dirname(__file__) returns 当前正在执行的脚本的父目录(即 ../

os.path.dirname(os.path.dirname(__file__)) returns当前正在执行的脚本的父目录的父目录。 (即 ../../

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 fooimport foobar)