不了解os.path.dirname()的工作方式

时间:2019-04-14 20:19:07

标签: python os.path sys.path

我对Python领域还很陌生,想知道是否有人可以解释这一行代码?

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

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

1 个答案:

答案 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 fooimport foobar