【发布时间】:2015-05-21 12:06:01
【问题描述】:
我们有文件的完整路径:
/dir1/dir2/dir3/sample_file.tgz
基本上,我想以这个字符串结尾:
dir3/sample_file.tgz
我们可以使用regex 或.split("/") 解决它,然后将列表中的最后两项连接起来.....但我想知道我们是否可以使用os.path.dirname() 或其他东西来做这个更时尚像这样?
【问题讨论】:
我们有文件的完整路径:
/dir1/dir2/dir3/sample_file.tgz
基本上,我想以这个字符串结尾:
dir3/sample_file.tgz
我们可以使用regex 或.split("/") 解决它,然后将列表中的最后两项连接起来.....但我想知道我们是否可以使用os.path.dirname() 或其他东西来做这个更时尚像这样?
【问题讨论】:
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 很好用,但不管平台如何,它都应该做正确的事情。
如果你在 python3.4(或更高版本,大概),有一个pathlib:
import os
import pathlib
p = pathlib.Path("/foo/bar/baz/txt")
onedir = os.path.join(*p.parts[-2:])
【讨论】:
onedir = pathlib.Path(*p.parts[-2:])