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

时间:2015-07-15 20:12:00

标签: python regex regex-group os.path

Python中是否有办法通过使用REGEXgroup()os.path来提取Windows文件路径中的每个文件目录和文件?

我正在处理具有不同数量目录的文件路径,因此一行可能是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,我认为他们中的任何一个都没有做我想做的事。 / p>

1 个答案:

答案 0 :(得分:2)

您可以使用以下命令分隔fileName和目录:

some_instance.parent.parent.parent

您可以使用以下方法将所有块分隔为“\”:

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

然后,您可以使用连接将切片和胶合子集合在一起来取出特定的块。

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

  • 如上所述使用拆分功能拆分
  • 查找最长列表的长度
  • 在所有列表中插入空字符串,但在最后一个元素之前最长,以使列表等长
  • 使用'|'加入他们使用连接功能

回应你的评论:

运行以下程序

chunks = filePath.split (r'\')

作为输出

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

所以'\\'而不是rsplit中的'\'。