Python - 将给定目录更改为高于或低于一级

时间:2012-11-02 11:37:08

标签: python

有没有办法从给定的目录中获得一个高于或低于目录的级别? 例如,在函数中输入'/ a / b / c /'目录。

所以函数会返回:

lvl_down = '/a/b/'
lvl_up = '/a/b/c/d/'

我认为你可以使用're'模块(至少在目录下一级)来实现它,但是如果没有正则表达式,可能还有更简单,更好的方法吗?

3 个答案:

答案 0 :(得分:7)

我不知道,该功能应该如何知道,你想进入目录 d

#!/usr/bin/python
import os.path

def lvl_down(path):
    return os.path.split(path)[0]

def lvl_up(path, up_dir):
    return os.path.join(path, up_dir)

print(lvl_down('a/b/c'))   # prints a/b
print(lvl_up('a/b/c','d')) # prints a/b/c/d

注意:之前有另一个解决方案,但os.path是一个更好的解决方案。

答案 1 :(得分:2)

可以在模块osos.path中找到操纵路径的方法。

os.path.join - 智能地加入一个或多个路径组件。

os.path.split - 将路径名路径拆分为一对(head, tail),其中 tail 是最后一个路径名组件,而 head 是导致这一点。

os.path.isdir - 如果路径是现有目录,则返回 True

os.listdir - 返回一个列表,其中包含 path 指定的目录中的条目名称。

def parentDir(dir):
    return os.path.split(dir)[0]

def childDirs(dir):
    possibleChildren = [os.path.join(dir, file) for file in os.listdir(dir)]
    return [file for file in possibleChildren if os.path.isdir(file)]

答案 2 :(得分:1)

首先,如果给定的路径以斜杠结尾,则应始终使用切片将其删除。话虽如此,这里是如何获取路径的父目录:

>>> import os.path
>>> p = '/usr/local'
>>> os.path.dirname(p)
'/usr'

要向下,只需将名称附加到变量,如下所示:

>>> head = '/usr/local'
>>> rest = 'include'
>>> os.path.join(head, rest)
'/usr/local/include'