python处理某些文件夹下的csv文件,提取指定行到新文件中

需求:

提取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()

你可能感兴趣的:(Python)