【问题标题】:Extracting penultimate folder name from path从路径中提取倒数第​​二个文件夹名称
【发布时间】:2014-07-31 13:45:33
【问题描述】:

有人知道从给定路径中提取倒数第​​二个文件夹名称的聪明方法吗?

例如文件夹A/文件夹B/文件夹C/文件夹D -> 我想知道文件夹 C 的名称是什么,我不知道其他文件夹的名称,并且文件夹 C 之前的目录数量可能不定,但它始终是倒数第二个文件夹。

我想出的一切似乎都太麻烦了(例如,使用 basename 和 normpath 获取文件夹 D 的名称,从路径字符串中删除它,以及获取文件夹 C

干杯,-m

【问题讨论】:

  • @735Tesla 这根本不是 OP 所要求的......
  • 抱歉刚刚重读了问题并删除了评论
  • 那么你想成为你的路径的输出,folderC?
  • 我想要文件夹C的名字作为字符串

标签: python path directory


【解决方案1】:

没有一种好方法可以在一次调用中直接跳到路径中的部分,但是您可以像这样轻松完成您想要的:

>>> os.path.basename(os.path.dirname('test/splitting/folders'))
'splitting'

或者,如果您知道您将始终位于带有'/' 划定路径的文件系统上,您可以使用常规的旧split() 直接到达那里:

>>> 'test/splitting/folders'.split('/')[-2]
'splitting'

虽然这有点脆弱。 dirname+basename 组合可以在路径末尾有/没有文件的情况下使用,作为拆分版本,您必须更改索引

【讨论】:

  • 不幸的是,事实并非如此;)
【解决方案2】:

是的,确实有:

>>> import os.path
>>> os.path.basename(os.path.dirname("folderA/folderB/folderC/folderD"))
'folderC'

也就是说,我们找到命名路径的“父目录”,然后从中提取结果路径的文件名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2011-01-25
    • 1970-01-01
    • 2013-07-13
    • 2015-04-05
    相关资源
    最近更新 更多