Python批量处理CSV文件

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

#encoding: utf-8

__author__ = 'DELL'

import csv

import glob

import datetime

import sys

import os

reload(sys)

#中文错误

sys.setdefaultencoding( "utf-8" )

'''

@author likehua

CSV批处理

'''

class BatchPRocessCSV:

def __init__(self,inputfolder="c:\\input\\",outputfolder="c:\\output\\"):

self.inputfolder=inputfolder

self.outputfolder=outputfolder

#批处理

def doBatchAction(self):

startTime=datetime.datetime.now()

print(u"开始处理...")

if (os.path.exists(self.outputfolder)==False):

#pass

os.makedirs(self.outputfolder)

list_dirs = os.walk(self.inputfolder)

for root, dirs, files in list_dirs:

#print i

for file in files:

otput=self.outputfolder+file

self.readcsv2csv(self.inputfolder+file,otput)

print(u"Running.........................\n")

endTime=datetime.datetime.now()

print(u"处理完成,耗时:%f秒"%(endTime-startTime).seconds)

#读取一个csv提取部分信息生成新的CSV

def readcsv2csv(self,inputfile,outputfile):

with open(inputfile, 'rb') as csvfile:

o=open(outputfile,"wb")

#解决csv浏览乱码问题

o.write('\xEF\xBB\xBF');

writer=csv.writer(o)

#读取列 将字符串转为数组

column=csvfile.readline().split(",")

#print(column.index('App Release Date'))

#print(column)

writer.writerow(['Rank' ,'Category', 'Country ','App Name', 'Value', 'Unit' , 'App Release Date', 'Publisher Name', 'Company Name', 'Parent Company Name'])

reader = csv.reader(csvfile)

#table = reader[0]

#Rank, Category, Store, Device, Type, Country, Period,Version, App_ID, App_Name, Value, Unit, Value_Type, AppURL, App_IAP, App_Category, App_Device, Current_Price, App_Release_Date, Publisher_ID, Publisher_Name, CompanyName, ParentCompanyName, AppNameUnified, AppFranchise, UnifiedAppID, AppFranchiseID, CompanyID, ParentCompanyID

for row in reader:

lenth=len(row)

if lenth>10:

writer.writerow([row[column.index("Rank")],row[column.index("Category")],row[column.index("Country")],row[column.index("App Name")],row[column.index("Value")],row[column.index("Unit")],row[column.index("App Release Date")],row[column.index("Publisher Name")],row[column.index("Company Name")],row[column.index("Parent Company Name")]])

#process

if __name__=="__main__":

csvProcess=BatchProcessCSV("c:\\input\\","e:\\output\\")

csvProcess.doBatchAction()

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航