我有一個包含不同檔案路徑的串列。我想通過將這些路徑的主干(即檔案名)與包含檔案名的 csv 檔案中的列進行匹配來對此串列中的元素進行排序。這是為了確保串列按包含在 csv.xml 中的檔案名的順序顯示元素。csv類似于如下所示:

我做了以下事情:
file_list = ['C:\\Example\\SS\\e342-SFA.jpg', 'C:\\Example\\DF\\j541-DFS.jpg', 'C:\\Example\\SD\\p162-YSA.jpg']
for f in file_list:
x = Path(f).stem # grabs file name from file_list without .jpg
for line in csv_file:
IL = line.replace(":", "").replace("\n", "").replace("(", "").replace(")", "")
columns = IL.split(",")
if columns[3] == x: # column[3] = File name in csv
[do the sorting]
我不確定如何從這里進一步進行。
uj5u.com熱心網友回復:
我假設您已經知道如何打開和決議 csv 檔案,因此您已經有了 list ['p162-YSA', 'e342-SFA', 'j541-DFS']。
from ntpath import basename, splitext
order_list = ['p162-YSA', 'e342-SFA', 'j541-DFS']
file_list = ['C:\\Example\\SS\\e342-SFA.jpg', 'C:\\Example\\DF\\j541-DFS.jpg', 'C:\\Example\\SD\\p162-YSA.jpg']
order_dict = {}
for i, w in enumerate(order_list):
order_dict[w] = i
# {'p162-YSA': 0, 'e342-SFA': 1, 'j541-DFS': 2}
sorted_file_list = [None] * len(file_list)
for name in file_list:
sorted_file_list[ order_dict[splitext(basename(name))[0]] ] = name
print(sorted_file_list)
# ['C:\\Example\\SD\\p162-YSA.jpg', 'C:\\Example\\SS\\e342-SFA.jpg', 'C:\\Example\\DF\\j541-DFS.jpg']
注意:我選擇了 importbasename和splitextfromntpath而不是 from os.path,這樣這段代碼就可以在我的 linux 機器上運行。請參閱此相關問題:Get basename of a Windows path in Linux。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/410616.html
標籤:
上一篇:如何遍歷向量以生成新物件?
