从完整文件路径中提取文件名和其父目录的Pythonic方式是什么?

3
我们拥有文件的完整路径:
/dir1/dir2/dir3/sample_file.tgz

基本上,我想最终得到这个字符串:
dir3/sample_file.tgz

我们可以使用正则表达式或者使用.split("/")然后取出列表中的最后两项并将它们连接起来来解决这个问题......但是我想知道是否可以更加优雅地使用os.path.dirname()或类似的方法?
1个回答

8
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))

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

如果你正在使用Python 3.4或更高版本,那么有一个名为pathlib的工具:

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

3
如果您一直使用pathlib的话会更好:onedir = pathlib.Path(*p.parts[-2:]),代码的意思不变,仅翻译内容。 - Adrian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接