最近项目需要将大量的压缩文件导入到数据库中,所以开始总结用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()

最新文章

  1. GitHub上最火的40个Android开源项目
  2. 使用File类递归列出E盘下全部文件
  3. POJ1222_EXTENDED LIGHTS OUT
  4. uestc_retarded 模板
  5. 教你利用iframe在网页中显示天气
  6. 身份证校验程序(上)- 零基础入门学习Delphi48
  7. TFS Build Definition
  8. HDU2795 billboard【转化为线段树。】
  9. [2011山东ACM省赛] Identifiers(模拟)
  10. Java基础语法<八> 继承
  11. 剖析touch事件在View中的传递
  12. (转)Schema
  13. 【MYSQL】SQL 的join 区别
  14. 栈的实现Java
  15. TensorFlow简易学习[3]:实现神经网络
  16. macbookPro 搭建maven环境下载jar包
  17. C# 类如何声明索引器以提供对类的类似数组的访问的代码
  18. flask 图文混排的简单操作
  19. 如何解决Failed to retrieve MSVC Environment from XXXXXXXX
  20. Axure RP 9 Beta 开放下载(更新激活密钥和汉化包)

热门文章

  1. Python 学习笔记(七)Python字符串(三)
  2. 数据恢复顾问(DRA)
  3. 并发编程之多线程基础-Thread和Runnable的区别及联系(二)
  4. JavaScript 基础(三) 对象 条件判断
  5. Java的内存--存储(1)
  6. ABAP术语-Customer Enhancement
  7. Spirng+SpringMVC+Mybatis(一)
  8. http协议中的状态码(status code),超文本传输协议状态码
  9. vuex重置所有state(可定制)
  10. kafka单机部署文档