2010-10-03 87 views
2

我將在python上實現遞歸文件夾比較。你認爲最好的算法是什麼?使用python遞歸比較文件夾

  1. 獲取文件的兩個列表的文件夾
  2. 排序兩個列表
  3. 比較使用filecmp模塊文件
  4. 重複以上步驟,每個文件夾遞歸

在結果我需要只獲取不同文件的列表(這裏不需要內容差異),其中一個可比文件夾中缺少的文件列表。

謝謝。

回答

1

如果我是你,我會檢查是否有其他軟件尚未實現此功能,如rsyncdiff。對於我所看到的,兩者都有你需要的功能。有關於它的更多信息here

如果你真的需要做到這在Python,我想稍微修改你的算法,使得它看起來是這樣的:

  1. 商店使用os.walk兩個單獨的列表變量兩條路徑的內容;
  2. 迭代第一個列表的每個值以在第二個列表中找到對應的值;
  3. 如果找到相應的值,請使用filecmp模塊進行比較。否則,顯示丟失的文件;
  4. 刪除第二個列表中的值;
  5. 轉到#2,直到第一個列表爲空;
  6. 打印第二個列表中的所有內容;
+0

好像你會通過使用集合而不是列表獲得一些速度。 – intuited 2010-10-04 00:27:41

+0

如果我將第二個列表中的新文件刪除但第一個列表中缺少了什麼?根據這些步驟,我將擁有最初僅在第一個列表中的文件的相同列表。也許你可以根據你列出的步驟在這裏寫下代碼示例? – yart 2010-12-20 00:03:03

2

對目錄和每個文件存儲進行遞歸搜索md5或sha字典中文件的校驗和作爲鍵和路徑/名稱作爲值。爲這兩個目錄製作這本字典。然後,您可以從每個目錄中刪除對,並且結果丟失/不同的文件。

這將使簡單的O(n)算法,其中n是目錄的卷。