使用os.path
要 获取包含脚本的目录的父目录 (无论当前工作目录如何),都需要使用
__file__。
在脚本内部使用
os.path.abspath(__file__)来获取脚本的绝对路径,并调用
os.path.dirname两次:
from os.path import dirname, abspathd = dirname(dirname(abspath(__file__))) # /home/kristina/desire-directory
基本上,您可以通过
os.path.dirname根据需要调用多次来遍历目录树。例:
In [4]: from os.path import dirnameIn [5]: dirname('/home/kristina/desire-directory/scripts/script.py')Out[5]: '/home/kristina/desire-directory/scripts'In [6]: dirname(dirname('/home/kristina/desire-directory/scripts/script.py'))Out[6]: '/home/kristina/desire-directory'如果要 获取当前工作目录的父目录
,请使用
os.getcwd:
import osd = os.path.dirname(os.getcwd())
使用pathlib
您也可以使用该
pathlib模块(在Python 3.4或更高版本中可用)。
每个
pathlib.Path实例都具有
parent引用父目录的
parents属性以及该属性,该属性是路径的祖先列表。
Path.resolve可以用来获取绝对路径。它还可以解决所有符号链接,但是
Path.absolute如果您不希望这样做,可以使用它。
Path(__file__)分别
Path()代表脚本路径和当前工作目录,因此,为了 获得脚本目录的父目录 (无论当前工作目录如何),您可以使用
from pathlib import Path# `path.parents[1]` is the same as `path.parent.parent`d = Path(__file__).resolve().parents[1] # Path('/home/kristina/desire-directory')并 获取当前工作目录的父目录
from pathlib import Pathd = Path().resolve().parent
请注意,这
d是一个
Path实例,并不总是很方便。您可以
str在需要时将其轻松转换为:
In [15]: str(d)Out[15]: '/home/kristina/desire-directory'



