最近遇到一個需求,就是要把SQLite數據中沒有存儲的文件名的文件刪除掉,想來想去仍是決定用python。因此也就花了一天半的時間學習了下,隨手寫了個小例子。
直接上代碼python
要用到的頭文件包sql
#coding=utf-8 #!/usr/bin/python #!/usr/bin/env python import os import shutil import sqlite3
定義記錄變量數據庫
#記錄所文件數 sumCount=0; #記錄留存文件數 count=0; #記錄刪除文件數 delCount=0; #定義存儲遍歷全部文件數組 delList = []
#文件存儲路徑 delDir = "/Users/liudengtan/Desktop/testFile/" #獲取路徑下全部文件 delList = os.listdir(delDir) #打開鏈接數據庫 conn = sqlite3.connect('images.db') print "開始處理...";
把文件目錄下的全部文件與數據庫的存的對比,若是文件在數據中,就存留,不然刪除文件數組
#遍歷 for f in delList: #獲取到文件路徑 filePath = os.path.join(delDir, f) if os.path.isfile(filePath): sumCount=sumCount+1 #將文件全路徑中存儲路徑替換,只留文件名 fileName=filePath.replace(delDir,'') #數據庫查看當前文件名是否存在 cursor = conn.execute("SELECT image FROM '表名' where image=(?)",(fileName)) res = cursor.fetchall() #條件判斷>0文件存在 if len(res) > 0: count = count + 1; else:#文件不存在將其刪除 if os.path.isfile(delDir + fileName): #刪除文件操做 os.remove(delDir + fileName) print delDir + fileName + " 刪除!" delCount = delCount + 1; #關閉數據庫 conn.close() print "處裏結束:"; print "全部文件總數 : ",sumCount; print "刪除文件數 : ",delCount;