从完整文件路径中提取文件名及其父目录的Pythonic方法?

kat*_*ata 2 python directory path

我们有文件的完整路径:

/dir1/dir2/dir3/sample_file.tgz
Run Code Online (Sandbox Code Playgroud)

基本上,我想以这个字符串结束:

dir3/sample_file.tgz
Run Code Online (Sandbox Code Playgroud)

我们可以用regex或解决它,.split("/")然后将列表中的最后两个项目连接起来......但我想知道我们是否可以用os.path.dirname()或类似的东西做更时尚?

dwa*_*son 5

import os
full_filename = "/path/to/file.txt"
fname = os.path.basename(full_filename)
onedir = os.path.join(os.path.basename(os.path.dirname(full_filename)), os.path.basename(full_filename))
Run Code Online (Sandbox Code Playgroud)

没有人说过 os.path 很好用,但无论平台如何,它都应该做正确的事情。

如果您使用的是 python3.4(或更高版本,大概),则有一个pathlib

import os
import pathlib
p = pathlib.Path("/foo/bar/baz/txt")
onedir = os.path.join(*p.parts[-2:])
Run Code Online (Sandbox Code Playgroud)

  • 如果你把它一直保存到pathlib就更好了:`onedir = pathlib.Path(*p.parts[-2:])` (2认同)