簡體   English   中英

從Python中的動態文件路徑中提取目錄名稱

[英]Extract Directory Names from Dynamic File Paths in Python

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 ,我認為它們中的任何一個都沒有做我正在嘗試做的。

您可以使用以下命令分隔文件名和目錄:

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

給出作為輸出

E:\dir1\Logs\dir2\1998-12-23
message.txt

因此,在rsplit中使用“ \\\\”而不是“ \\”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM