寻找文件夹的pythonic方式

时间:2016-08-08 21:27:16

标签: windows python-2.7 path directory

从提供的路径中查找子文件夹的最pythonic方式是什么?

import os

def get_folder(f, h):
  pathList = f.split(os.sep)
  sourceList = h.split(os.sep)

  src = set(sourceList)
  folderList = [x for x in pathList if x not in src]

  return folderList[0]


print get_folder("C:\\temp\\folder1\\folder2\\file.txt", "C:\\temp") # "folder1" correct
print get_folder("C:\\temp\\folder1\\file.txt", "C:\\temp") # "folder1" correct
print get_folder("C:\\temp\\file.txt", "C:\\temp") # "file.txt" fail should be "temp"

在上面的示例中,我在“文件夹2”中有一个file.txt。路径“C:\ temp”作为起始点提供。

我想从中返回子文件夹;如果有问题的文件在源文件夹中,它应该返回源文件夹。

1 个答案:

答案 0 :(得分:0)

试试这个。我不确定为什么你说folder1对于第一个例子是正确的,是不是folder2?我也在Mac上os.sep对我不起作用,但你可以适应它。

import os

def get_folder(f, h):
    pathList = f.split("\\")

    previous = None

    for index, obj in enumerate(pathList):
        if obj == h:
            if index > 0:
                previous = pathList[index - 1]

    return previous


print get_folder("C:\\temp\\folder1\\folder2\\file.txt", "file.txt") # "folder2" correct
print get_folder("C:\\temp\\folder1\\file.txt", "file.txt") # "folder1" correct
print get_folder("C:\\temp\\file.txt", "file.txt") # "file.txt" fail should be "temp"