使用Python获取当前目录的父目录
在Python中, OS 模块用于与操作系统交互。它属于 Python 的标准实用程序模块。该模块提供了一种使用操作系统相关功能的可移植方式。 *os* 和 *os.path* 模块包含许多与文件系统交互的函数。
OS 模块提供了多种获取父目录的方法。一些方法是:
- 使用 os.path.abspath()
- 使用 os.path.dirname()
- 使用 os.path.relpath() 和 os.path.dirname()
使用 os.path.abspath()
os.path.abspath() 可用于获取父目录。此方法用于获取路径的规范化版本。这个函数还需要os.path.join()和os.pardir()的帮助。
Python中的 os.path.join() 方法智能地连接一个或多个路径组件。此方法将各种路径组件与除了最后一个路径组件之外的每个非空部分之后的每个非空部分都使用一个目录分隔符 ('/') 连接。如果要加入的最后一个路径组件为空,则将目录分隔符 ('/') 放在末尾。
Syntax: os.path.abspath(path)
Parameters:
path: A path-like object representing a file system path.
Return Type: Returns a string that is a normalized version of the path.
例子:
Python3
# Python program to get parent
# directory
import os
# get current directory
path = os.getcwd()
print("Current Directory", path)
# prints parent directory
print(os.path.abspath(os.path.join(path, os.pardir)))
Python3
# Python program to get parent
# directory
import os
# get current directory
path = os.getcwd()
print("Current Directory", path)
print()
# parent directory
parent = os.path.dirname(path)
print("Parent directory", parent)
Python3
# Python program to get the
# parent directory
import os.path
# function to get parent
def getParent(path, levels = 1):
common = path
# Using for loop for getting
# starting point required for
# os.path.relpath()
for i in range(levels + 1):
# Starting point
common = os.path.dirname(common)
# Parent directory upto specified
# level
return os.path.relpath(path, common)
path = 'D:/Pycharm projects / GeeksforGeeks / Nikhil / gfg.txt'
print(getParent(path, 2))
输出:
使用 os.path.dirname()
Python中的 os.path.dirname() 方法用于从指定路径获取目录名。
Syntax: os.path.dirname(path)
Parameter:
path: A path-like object representing a file system path.
Return Type: This method returns a string value which represents the directory name from the specified path.
例子:
Python3
# Python program to get parent
# directory
import os
# get current directory
path = os.getcwd()
print("Current Directory", path)
print()
# parent directory
parent = os.path.dirname(path)
print("Parent directory", parent)
输出:
使用 os.path.relpath() 和 os.path.dirname()
在上面的例子中,获取父目录被限制为一级,即我们只能获取当前目录的父级只有一级。假设我们要找到父目录的父目录,那么上面的代码就失败了。这可以通过一起使用 os.path.relpath() 和 os.path.dirname() 来实现。
Python中的 os.path.relpath() 方法用于从当前工作目录或给定目录获取到给定路径的相对文件路径。
Syntax: os.path.relpath(path, start = os.curdir)
Parameter:
path: A path-like object representing the file system path.
start (optional): A path-like object representing the file system path.
The relative path for given path will be computed with respect to the directory indicated by start. The default value of this parameter is os.curdir which is a constant string used by the operating system to refer to the current directory.
A path-like object is either a string or bytes object representing a path.
Return Type: This method returns a string value which represents the relative file path to given path from the start directory.0222
例子:
要根据用户指定的级别获取父目录,我们将创建一个函数getParent(),它将路径和级别作为参数。在函数内部,一个 for 循环将迭代 level+1 个时间,并且 os.path.dirname() 将在 for 循环内被调用。在 for 循环中调用此函数将为我们提供 os.path.relpath() 将提供相对文件路径的起点。
下面是实现。
Python3
# Python program to get the
# parent directory
import os.path
# function to get parent
def getParent(path, levels = 1):
common = path
# Using for loop for getting
# starting point required for
# os.path.relpath()
for i in range(levels + 1):
# Starting point
common = os.path.dirname(common)
# Parent directory upto specified
# level
return os.path.relpath(path, common)
path = 'D:/Pycharm projects / GeeksforGeeks / Nikhil / gfg.txt'
print(getParent(path, 2))
输出: