使用pathlib获取文件名和最后一个x目录名有更好的方法吗

2024-04-24 21:20:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有路径/bin/kk/bb/pp/hallo.png,想要得到:pp/hallo.png。我检查了一下https://docs.python.org/3/library/pathlib.html没有找到直接的方法

这就是我现在使用的方式:

from pathlib import Path

a = Path("/bin/kk/bb/pp/hallo.png")

# get the parts i want 
b = list(a.parts[-2:])

# add / and join all together 
c = "".join([ "/" + x  for x in b])

d = Path(c)
d

输出:

PosixPath('/pp/hallo.png')

我不喜欢这样,也不喜欢寻找更好/更干净的方法

也许是这样的:

a[-2:] -> PosixPath('/pp/hallo.png')

1条回答
网友
1楼 · 发布于 2024-04-24 21:20:13

你可以这样做:

from pathlib import Path

a = Path("/path/to/some/file.txt")

b = Path(*a.parts[-2:])
# PosixPath('some/file.txt')

或者,作为一种功能:

def last_n_parts(filepath: Path, n: int = 2) -> Path:
    return Path(*filepath.parts[-abs(n):])

我认为您需要这样做的唯一原因是,如果您指定的输出文件共享相同的目录结构。例如,输入为/bin/kk/bb/pp/hallo.png,输出为/other/dir/pp/hallo.png。在这种情况下,您可以:

in_file = Path("/bin/kk/bb/pp/hallo.png")
out_dir = Path("/other/dir")

out_file = out_dir / last_n_parts(in_file)
# PosixPath('/other/dir/pp/hallo.png')

相关问题 更多 >