標籤:
最近項目需要將大量的壓縮檔匯入到資料庫中,所以開始總結用Python批量處理的辦法,本次是首先將這些壓縮檔的檔案名稱提取出來,然後匯入到資料庫中。
由於涉及到路徑的讀取處理,所以方法有os模組和commands模組,本次主要採用commands模組(有時間的話,一定要再探索一下os模組實現的方式)。
# encoding: utf-8
#!/usr/bin/python
import commands
import MySQLdb
conn = MySQLdb.connect(
host=‘localhost‘,
user=‘***‘,
passwd=‘***‘,
db=‘***‘,
charset=‘utf8‘)
cur = conn.cursor()
#path = ‘/home/***/***/‘
res = commands.getstatusoutput( ‘find /home/***/***/企業名錄/‘ ) #res 為返回的元組,包含(status,pathlist)即狀態代碼,路徑兩個元素;find為Linux下尋找檔案的命令
#res = commands.getstatusoutput( ‘find /home/***/***/‘ )
pathlist = res[1].split(‘\n‘) #通過下標為1,提取出元祖res中的路徑,並通過字串方法split,去掉‘\n’,轉換成一個一維的路徑列表
#for line in pathlist:
#type(line)
for i in range(0,len(pathlist)): #通過for迴圈將列表中的檔案路徑取出
fileLine = pathlist[i] #取出後的檔案路徑為一個字串
#print type(fileLine)
seperator = fileLine.rfind(‘/‘) #通過字串方法rfind,找到字元‘/’在路徑中最後出現的位置,在此位置之前為路徑,在此之後為檔案名稱(但是有一個小問題是檔案夾的名字是一個路徑)
filePath = fileLine[0:seperator+1] #通過切片的方式提取出檔案路徑
fileName = fileLine[seperator+1:] #通過切片的方式提取出檔案名稱
fileType = fileLine[-3:]
#sql = "insert into table rarFileList(ID,filePath,fileName,fileType) values (%s,%s,%s,%s)"(str(i),filePath,fileName,fileType)
#sql = "insert into table rarFileList(ID,filePath,fileName,fileType) values (" + str(i) + "," + filePath + "," + fileName + "," + fileType + ")" #此處為多種方式嘗試,需要小心會有一些資料類型錯誤等情況出現
#print sql
#cur.execute(sql)
cur.execute("insert into rarFileList(ID,filePath,fileName,fileType) values (%s,%s,%s,%s)",(i,filePath,fileName,fileType))
#if fileLine[-3:] == ‘rar‘:
#sql = "update rarFileList set status= ‘done‘ where fileType = ‘rar‘"
#cur.execute(sql)
#elif fileLine[-3:]== ‘zip‘:
#sql = "update rarFileList set status= ‘done‘ where fileType =‘zip‘"
#cur.execute(sql)
cur.close()
conn.commit()
conn.close()
Python調用MYSQL,將檔案名稱和路徑批量入庫用法小結