前言
最近在工作中遇到一個需求,就是要把SQLite數據中沒有存儲的文件名的文件刪除掉,想來想去還是決定用python/272365.html">python。所以也就花了一天半的時間學習了下,隨手寫了個小例子,下面話不多說了,感興趣的朋友們一起來看看詳細的介紹吧。
直接上代碼
要用到的頭文件包
#coding=utf-8#!/usr/bin/python#!/usr/bin/env pythonimport osimport shutilimport 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;總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。
新聞熱點
疑難解答