python操做SQLite數據庫和文件操做

最近遇到一個需求,就是要把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;
相關文章
相關標籤/搜索