从提供的路径中查找子文件夹的最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”作为起始点提供。
我想从中返回子文件夹;如果有问题的文件在源文件夹中,它应该返回源文件夹。
答案 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"