我正在尋找一種方法來刪除基於時期標識符的額外文件。當我拉下一堆報告時,有一些報告具有相同的名稱,但具有獨特的時代。我想刪除前面的一個,只保留目錄中所有文件的最新報告。基於時期標識符刪除相似的名稱文件
前)
- file1-1498592006.csv
- file1-1498592004.csv
任何幫助,將不勝感激。
我正在尋找一種方法來刪除基於時期標識符的額外文件。當我拉下一堆報告時,有一些報告具有相同的名稱,但具有獨特的時代。我想刪除前面的一個,只保留目錄中所有文件的最新報告。基於時期標識符刪除相似的名稱文件
前)
任何幫助,將不勝感激。
您可以使用set
跟蹤您已經看到的文件名。任何重複都可以刪除。
seen = set()
for file in sorted(os.listdir('/path/to/your/reports'), reverse=True):
filename = file.rsplit('-', 1)[0]
if filename not in seen:
seen.add(filename)
else:
os.unlink(file)
您可以使用os.unlink
刪除附加項。
感謝@Błotosmętek爲此:您將按降序對文件進行排序,以確保只保留最新的報告。
如果只有一個公共文件名,即包含所有「file1」的目錄,這不會起作用嗎?除非我在這裏忽略了這一點,否則將不得不對所有常用文件名進行一些迭代。 – Connor
並非如此。每次遇到_new_文件名時,比如說文件2,該文件將被保留,並且該條目將添加到該集合中。未來的文件2將被確定爲已經存在於該集合中並且將被刪除。 –
首先由「epoch」部分降序排列文件名,這將保證你保存的文件是最新的。 –
我會想象你會採用正則表達式,對嗎? – Connor
正則表達式在這裏矯枉過正。 '''rsp就足夠了。 –
@Coldspeed是的,你說得對,當我第一次看到它時,我誤解了這裏的目標。 – Connor