从 Python 中的动态文件路径中提取目录名称
Extract Directory Names from Dynamic File Paths in Python
在 Python 中有没有办法通过使用 REGEX
和 group()
或 os.path
?
我正在处理具有不同数量目录的文件路径,所以一行可能是 D:\dir1\file.txt
而下一行可能是 Z:\dir1\dir2\dir3\dir4\dir5\file.txt
,所以我想知道是否有办法当我正在搜索的文本中有不同数量的 \
时,使用 REGEX
或 Python 中的内置函数来执行此操作。
任何见解都会有所帮助,即使它只是无法完成的苦涩事实。
编辑后:
我正在尝试提取 \
和最后一个 file.txt
之间的目录名称,并将每个 dir
或 file
写入它自己的列中输出文本文件。
以上两行我想要的输出是:
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 中使用 '\\' 而不是 '\'。
在 Python 中有没有办法通过使用 REGEX
和 group()
或 os.path
?
我正在处理具有不同数量目录的文件路径,所以一行可能是 D:\dir1\file.txt
而下一行可能是 Z:\dir1\dir2\dir3\dir4\dir5\file.txt
,所以我想知道是否有办法当我正在搜索的文本中有不同数量的 \
时,使用 REGEX
或 Python 中的内置函数来执行此操作。
任何见解都会有所帮助,即使它只是无法完成的苦涩事实。
编辑后:
我正在尝试提取 \
和最后一个 file.txt
之间的目录名称,并将每个 dir
或 file
写入它自己的列中输出文本文件。
以上两行我想要的输出是:
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 中使用 '\\' 而不是 '\'。