需求:
提取2017-06--2017-08三个月的数据中的某些行到一个新的文件中。
思路:
1.循环读取每个文件夹下的每一个文件
2.解析文件,把满足条件的数据写到list中
3.把list写入新文件。
代码如下:【环境是Windows7专业版+Python2.7.9】
# -*- coding:utf-8 -*-
import os
import csv
import sys
__author__ = 'zengqiang.wang'
#解决中文乱码问题
defaultencoding = 'utf-8'
if sys.getdefaultencoding() != defaultencoding:
reload(sys)
sys.setdefaultencoding(defaultencoding)
#需要遍历的文件夹
paths = [r'E:\MyCodes\Python27\20171215\06_01_15',r'E:\MyCodes\Python27\20171215\06_16_30',r'E:\MyCodes\Python27\20171215\07_01_15',r'E:\MyCodes\Python27\20171215\07_16_31',r'E:\MyCodes\Python27\20171215\08_01_15',r'E:\MyCodes\Python27\20171215\08_16_31']
#全局变量,存放从csv中读取出来的特定行
global data
data = []
for path in paths:
for filename in os.listdir(path):
csvFile = open(path + '/' + filename,'r')
reader = csv.reader(csvFile)
for item in reader:
if len(item) == 1:
pass
else:
insurance = item[5].decode("gbk")
if "泰康养老保险股份有限公司北京分公司" in insurance:
data.append(item)
print "length of data:",len(data)
csvFile.close()
#解析后的文件存放到result.csv文件中
csvFile2 = open('result.csv','wb')#mode要写成wb,如果是w,则会出现空行的情况。
writer = csv.writer(csvFile2)
m = len(data)
for i in range(m):
writer.writerow(data[i])
#writer.writerow(newTitle)
csvFile2.close()