从 Python 中的动态文件路径中提取目录名称

Extract Directory Names from Dynamic File Paths in Python

在 Python 中有没有办法通过使用 REGEXgroup()os.path?

我正在处理具有不同数量目录的文件路径,所以一行可能是 D:\dir1\file.txt 而下一行可能是 Z:\dir1\dir2\dir3\dir4\dir5\file.txt,所以我想知道是否有办法当我正在搜索的文本中有不同数量的 \ 时,使用 REGEX 或 Python 中的内置函数来执行此操作。

任何见解都会有所帮助,即使它只是无法完成的苦涩事实。

编辑后:

我正在尝试提取 \ 和最后一个 file.txt 之间的目录名称,并将每个 dirfile 写入它自己的列中输出文本文件。

以上两行我想要的输出是:

 col1|col2|col3|col4|col5|col6
 dir1|dir2|dir3|dir4|dir5|file.txt
 dir1|    |    |    |    |file.txt

我知道 os.path 有很多很好的内置功能,但是在阅读了这个网站:https://docs.python.org/2/library/os.path.html 之后,我认为他们中的任何一个都没有做我想做的事情.

您可以使用以下方式分隔文件名和目录:

splitFilePath = filePath.rsplit (']\', 1)
directory = splitFilePath [0]
fileName = splitFilePath [1]

您可以使用“\”分隔所有块:

chunks = filePath.split (r'\')

然后,您可以使用切片将特定块取出,并使用连接将它们的子集粘合在一起。

使用您在已编辑问题中添加的列假设您知道最长的路径来确定列数:

  • 使用上面解释的拆分函数拆分
  • 查找最长列表的长度
  • 在所有列表中插入空字符串,但在最后一个元素之前插入最长的字符串以使列表长度相等
  • 使用“|”加入他们使用连接函数

回复您的评论:

运行下面的程序

filePath = r'E:\dir1\Logs\dir298-12-23\message.txt'
splitFilePath = filePath.rsplit ('\', 1)
directory = splitFilePath [0]
fileName = splitFilePath [1]
print directory
print fileName

给出输出

E:\dir1\Logs\dir298-12-23
message.txt

所以在 rsplit 中使用 '\\' 而不是 '\'。