【问题标题】:Extract some portion of path提取路径的一部分
【发布时间】:2021-10-01 08:02:38
【问题描述】:

我的文件路径很长,我需要提取最后 3 个子文件夹。例如,如果我的路径是:

a\b\c\d\e\f\g

那么我只需要最后 3 个文件夹:

e\f\g

我怎样才能做到这一点?

【问题讨论】:

标签: python


【解决方案1】:

处理路径的最佳实践是使用os 和分隔符os.sep 将路径拆分为多个部分。使用 os.sep 而不是 '\' 或 '/',因为这使它独立于系统。

import os

path = r'a\b\c\d\e\f\g'
path = os.path.normpath(path)
path_list = path.split(os.sep)
print(os.sep.join(path_list[-3:]))

打印出来:

e\f\g

【讨论】:

    【解决方案2】:

    您可以将\中的条款拆分并加入:

    '\\'.join(path_name.split("\\")[-3:]
    

    【讨论】:

      【解决方案3】:

      你可以像这样使用pathlib.PurePath.parts

      import pathlib
      
      p = pathlib.PureWindowsPath(r'a\b\c\d\e\f\g')
      parts = p.parts[-3:]
      # > ('e', 'f', 'g')
      p3 = pathlib.PureWindowsPath(*parts)
      print(p3)  # -> e\f\g
      

      (我使用的是 Linux,所以我指定了PureWindowsPath。)

      【讨论】:

        【解决方案4】:

        您可以使用rsplit(),maxsplit 为 3:

        a = r'a\b\c\d\e\f\g'
        print('\\'.join(a.rsplit('\\', 3)[1:]))
        

        输出:

        e\f\g
        

        【讨论】:

          猜你喜欢
          • 2011-04-22
          • 1970-01-01
          • 1970-01-01
          • 2013-03-02
          • 2010-12-28
          • 2020-07-27
          • 2011-10-20
          • 2012-04-26
          • 1970-01-01
          相关资源
          最近更新 更多