处理csv文件

<pre name="code" class="python">
#-------------------------------------------------------------------------------
# Name:        module1
# Purpose:
#
# Author:      maoyongx
#
# Created:     21/01/2015
# Copyright:   (c) maoyongx 2015
# Licence:     <your licence>
#encoding='utf-8'
#-------------------------------------------------------------------------------
from __future__ import division
import csv
import datetime,time
import sys

exceltotalline=0
fail=0
success=0
starttime=''
endtime=''
a=0
info=[]
infosub=[]
infoerr=[]
infoerrsub=[]
parameter=0.85
def main():
    global exceltotalline
    global fail
    global success
    global starttime
    global endtime
    global a
    global info
    global infosub
    global infoerr
    global infoerrsub

    try:
        #address=raw_input("please input file address :")
        #print address
        address = sys.argv[1]

    #------------------------
        csvfile = file(address, 'rb')
    except:
        if address =='':
            print "address can't null"
            exit()
        else:
            print "please input correct address,example:python csv_read.py C:\\aa.csv"
            exit()
    reader = csv.reader(csvfile)
    #print type(reader)
    for line in reader:
        a=a+1
    csvfile.close()

    #-----------------------
    csvfile = file(address, 'rb')

    reader = csv.reader(csvfile)

    infoerrsub.append("TC Name")
    infoerrsub.append("Start ")
    infoerrsub.append('End Time')
    infoerrsub.append("Pass Rate")
    infoerr.append(infoerrsub)
    #print infoerr,'\n\n'
    infoerrsub=[]

    for line in reader:
        #print type(line)  <type 'list'>
        #print line
        if '"total_state"'  in line or  '"1/1"' in line:
            if line[5]!='"1"':
                rate=line[5].replace('"','')

                if float(rate)<parameter:

                    infoerrsub.append(line[0])
                    infoerrsub.append(line[3].replace('"',''))
                    infoerrsub.append(line[4].replace('"',''))
                    infoerrsub.append(line[5])
                    infoerr.append(infoerrsub)
                    infoerrsub=[]

                    #print line[0],line[3].replace('"',''),line[4].replace('"',''),line[5]
            #print line

        exceltotalline=exceltotalline+1  #record excel line
        for line2 in range(len(line)):  #???????
            if exceltotalline==2:  #??????
                starttime=line[3]
            if exceltotalline==a:
                endtime=line[3]

            #print len(line[line2])
            #print line[line2]
            if line[line2]=='"FAIL"':
                fail=fail+1
            elif line[line2]=='"PASS"':
                success=success+1

        #if exceltotalline==5:
        #    break
        #    continue
    #print  fail,success,starttime,a,endtime
    starttime=starttime.split('.')[0]
    starttime=starttime.replace('"',"")
    starttime=starttime.replace(':',"")
    starttime=starttime.replace(' ','')
    starttime=datetime.datetime(int(starttime[0:4]),int(starttime[4:6]),int(starttime[6:8]),int(starttime[8:10]),int(starttime[10:12]),int(starttime[12:14]))
    #print starttime

    endtime=endtime.split('.')[0]
    endtime=endtime.replace('"',"")
    endtime=endtime.replace(':',"")
    endtime=endtime.replace(' ','')
    endtime=datetime.datetime(int(endtime[0:4]),int(endtime[4:6]),int(endtime[6:8]),int(endtime[8:10]),int(endtime[10:12]),int(endtime[12:14]))
    #print endtime

    mkt_starttime = time.mktime(starttime.timetuple())
    mkt_endtime= time.mktime(endtime.timetuple())
    delt_time=mkt_endtime-mkt_starttime

    durationtime=time.strftime("%H:%M:%S",time.gmtime(delt_time))
    #durationtime=delt_time/60

    #print exceltotalline
    csvfile.close()
    infosub.append('Start time:')
    infosub.append(starttime)
    info.append(infosub)
    infosub=[]
    infosub.append('Stop time')
    infosub.append(endtime)
    info.append(infosub)
    infosub=[]
    infosub.append('Duration')
    infosub.append(durationtime)
    info.append(infosub)
    infosub=[]
    infosub.append('Pass')
    infosub.append(success)
    info.append(infosub)
    infosub=[]
    infosub.append('Fail')
    infosub.append(fail)
    info.append(infosub)
    infosub=[]
    infosub.append('Passrate')
    passrate =str(success/(success+fail)*100)+'%'
    infosub.append(passrate)
    info.append(infosub)
    infosub=[]
    #print info,'\n\n\n\n'
    #print infoerr
    info=info+infoerr
    try:
        csvfile = file('c:\\result.csv', 'wb')
    except:
        print "Please have manager access to run CMD!"
        exit()
    writer = csv.writer(csvfile)
    writer.writerows(info)

    csvfile.close()
    """print 'Start time:',starttime
    print 'Stop time',endtime
    print 'duration:',durationtime
    print 'Pass:',success
    print 'Fail:',fail
    print 'Passrate :',success/(success+fail)*100,'%'
    """

if __name__ == '__main__':
    main()
    #raw_input()
				
时间: 2024-10-02 23:12:51

处理csv文件的相关文章

oracle导出多CSV文件的靠谱的

oracle导出多CSV文件的问题 ---------------------------------------------------------------------- 用ksh脚本从oracle数据库中导出80w数据到csv文件,如用户给定名字为a.csv(文件最大4000行记录),则自动生产文件为a_1.csv,a_2.csv,...., a_200.csv 我已经实现了一个方法,但80w要导5小时,用户没法接受.如下: sqlplus -s user/pwd @${SqlDir}/

字符串与csv文件的日常操作

本周使用习惯了函数式编程,这样可以节省不少繁琐的步骤,而且对于程序的条理化非常有益.说来简单就是每个东西写成函数,规定输入输出. 下一周的任务就是面向对象了,把对象这个东西搞清楚,说不定可以重写整个文件为对象的操作 这里说几个本周很经常用的方法,一个是构建字符串数据中的字典数据,实际就是一个列表,这个列表我也是参考了一个tf-idf的文档给出的方法,核心思想就是将每一个字符串填入一个list最后将list写入循环对比,如果碰到一样的跳过,如果遇到不一样的输出,并且把这个字符串同样装入到list中

C/C++读写csv文件(用getline探测逗号分隔符)

csv文件其实就是文本文件,每行字段用逗号分隔. 代码 [cpp] view plain copy print? #include <iostream> #include <string> #include <vector> #include <fstream> #include <sstream> using namespace std; int main() { // 写文件 ofstream outFile; outFile.open(&q

解决 Excel 打开 UTF-8 编码 CSV 文件乱码的 BUG

解决 Excel 打开 UTF-8 编码 CSV 文件乱码的 BUG [email protected] http://www.cnblogs.com/swje/ 作者:Zhouwan 2017-6-6 方法一: 出处:http://blog.csdn.net/leonzhouwei/article/details/8447643 直接用 Excel 打开 UTF-8 编码的 CSV 文件会导致汉字部分出现乱码. 原因是 Excel 以 ANSI 格式打开,不会做编码识别. 打开 UTF-8 编

python csv文件打开错误:_csv.Error: line contains NULL byte

正常的csv文件读取如下: #coding:utf-8 import csv csvfilename = 'demo.csv' print u'################获取某一行' with open(csvfilename, 'rb') as csvfile: reader = csv.reader(csvfile) rows = [row for row in reader] print rows[0], rows[1], rows[2], rows[3] print u'#####

使用pandas处理大型CSV文件

# -*- coding:utf-8 -*- ''' CSV 常用API 1)reader(csvfile[, dialect='excel'][, fmtparam]),主要用于CSV 文件的读取,返回一个 reader 对象用于在CSV 文件内容上进行行迭代. 参数: csvfile,需要是支持迭代(Iterator)的对象,通常对文件(file)对象或者列表(list)对象都是适用的,并且每次调用next() 方法的返回值是字符串(string): dialect 的默认值为excel,与

sparkR读取csv文件

sparkR读取csv文件 The general method for creating SparkDataFrames from data sources is read.df. This method takes in the path for the file to load and the type of data source, and the currently active SparkSession will be used automatically. SparkR suppo

csv文件的读写

最近在搞一个比赛,经常要用到csv文件的读写,开始用的是Java,有CsvReader.CsvWriter包,读写的格式大致如下: File inFile = new File(inpath); FileInputStream fis = new FileInputStream(inFile); FileOutputStream fos = new FileOutputStream(outpath); CsvReader csvReader = new CsvReader(fis, Charse

将DataTable转换成CSV文件

DataTable用于在.net项目中,用于缓存数据,DataTable表示内存中数据的一个表.CSV文件最早用在简单的数据库里,由于其格式简单,并具备很强的开放性,所以起初被扫图家用作自己图集的标记.CSV文件是个纯文本文件,每一行表示一张图片的许多属性. 在.net项目中运用C#将DataTable转化为CSV文件,现在提供一个较为通用的方法,具体代码如下:         /// <summary>         /// 将DataTable转换成CSV文件         /// &

练习:读取解析CSV文件,将读取结果输出的控制台上,并封装到4个Teacher对象中.

/** *    读取解析CSV文件,将读取结果输出的控制台上,并封装到4个Teacher对象中. *    1, 土鳖, 13101015338, 北京海淀区 2, 咪咪, 13201015338, 北京朝阳区 3, 小仓, 13601015818, 北京宣武区 4, 饭岛爱, 13201025818, 北京朝阳区 /** * 读取解析CSV文件,将读取结果输出的控制台上,并封装到4个Teacher对象中. * 1, 土鳖, 13101015338, 北京海淀区 2, 咪咪, 13201015