使用Python來比較資料夾並提取差異部分
下面的指令碼可以在Python24裡很好地執行,在其他版本里沒有,但用的都是基本功能,應該沒有什麼問題。
程式碼裡的PathA是全的資料的資料夾,PathB是不全的資料的資料夾,PathC是個新的空目錄,指令碼執行完後就把PathA中有且pathB中沒有的檔案和目錄都寫到PathC裡了,還可以保持原來的目錄結構,速度和正確性都很令人滿意。
因為是急用的程式碼,所以寫得不很簡潔,也不是很規範,在此留志,一方面供自己以後參考,另一方面也提供給需要使用Python進行檔案和目錄操作的兄弟們共同參考。
# coding: GB2312
#系統模組
import sys
import os
import shutil
#用於檔案查詢的模組
from os.path import walk, join, normpath
#這個是完整的資料夾
PathA = "F:FullData"
#這個是缺檔案的資料夾
PathB = "F:IncomplData"
#這個是目標資料夾
PathC = "F:DiffData"
#============================================================
#這個函式是用來遞迴處理PathA,對PathA裡的每個檔案和資料夾在PathB中找是否有對應的檔案或資料夾
#若找不到,則在PathC中建立目錄並複製檔案
#複製檔案時使用了shutil模組的copy2函式,以保留檔案原來的建立時間和最後更新時間
def visit(arg, dirname, names):
#把目錄列印出來,以監視進度
print dirname
#得到路徑名後,把前面的主路徑名去掉
dir=dirname.replace(PathA,"")
dirnameB = os.path.join(PathB,dir)
dirnameC = os.path.join(PathC,dir)
if os.path.isdir(dirnameB):
#若PathB裡存在對應的資料夾,再逐個檔案判斷是否存在
for file in names:
if os.path.isfile(os.path.join(dirname,file)) and not os.path.isfile(os.path.join(dirnameB,file)):
if not os.path.isdir(dirnameC):
os.system("mkdir %s"%(dirnameC))
shutil.copy2(os.path.join(dirname,file), os.path.join(dirnameC,file))
elif os.path.isdir(os.path.join(dirname,file)) and not os.path.isdir(os.path.join(dirnameB,file)):
if not os.path.isdir(os.path.join(dirnameC,file)):
os.system("mkdir %s"%(os.path.join(dirnameC,file)))
else:
#若pathB裡不存在對應的資料夾,則在pathC裡建立對應的資料夾並複製檔案
if not os.path.isdir(dirnameC):
os.system("mkdir %s"%(dirnameC))
for file in names:
shutil.copy2(os.path.join(dirname,file), os.path.join(dirnameC,file))
#============================================================
if __name__=="__main__":
#這一行程式碼呼叫前面的visit函式,進行檔案查詢並遞迴處理
walk(PathA, visit, 0)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9697/viewspace-1011813/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 比較兩個資料庫的差異資料庫
- HHDESK資料夾比較功能
- 比較兩個資料庫的表結構差異(轉)資料庫
- 使用Visual Studio進行檔案差異比較
- grep -vFf 比較2個檔案差異
- Linux下檔案差異比較工具Linux
- awk比較檔案內容的差異
- 比較兩個的表結構差異
- 比較兩個表的資料差別
- 【原創】比較資料泵和exp/imp對相同資料匯出/匯入的效能差異
- Python連線mongodb提取部分欄位內資料並寫入txt檔案PythonMongoDB
- 集合差異比較演算法及效能測試演算法
- openGauss資料與PostgreSQL的差異對比SQL
- 比對兩個資料庫的差異:Java篇資料庫Java
- 【Python】Python 對比 C語言的差異PythonC語言
- 批量提取資料夾內檔名
- SQL Server 比較兩個資料庫的檢視和儲存過程結構差異SQLServer資料庫儲存過程
- ERP差異來源和差異處理
- Oracle表部分資料提取SQL語句OracleSQL
- Git差異並列顯示Git
- VisualDiffer for Mac(資料夾和檔案比較工具)v1.8.4Mac
- 英國網際網路使用者男女行為差異對比–資料資訊圖
- 使用selenium定位獲取標籤物件並提取資料物件
- 圖資料庫比較資料庫
- 資料結構比較資料結構
- 主流資料庫比較資料庫
- SAP BSP應用有狀態和無狀態行為差異比較
- SAP Spartacus B2B OrgUnit 和 OrgUser 的路由對映差異比較路由
- 7 款 Python 資料圖表工具的比較Python
- java 如何從零實現一個資料庫差異對比工具?Java資料庫
- git檢出專案部分資料夾Git
- python 兩個資料夾裡的檔名對比Python
- 使用version引數解決Oracle資料泵版本差異Oracle
- DirEqual for Mac(快速比較資料夾工具)Mac
- Mac資料夾快速比較工具:DirEqualMac
- 使用NLP和ML來提取和構造Web資料Web
- Naarak Studio DirEqual for Mac(資料夾比較工具) v3.2啟用版Mac
- 在 Linux 中用 Meld以圖形方式比較檔案和資料夾Linux