首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事

请教PYTHON读取CSV文件方法

发布网友

我来回答

1个回答

热心网友

#!/usr/bin/python
# -*- coding: UTF-8  -*-

from Log import Loginfo
import cgi, os, csv, sys, re
reload(sys)
sys.setdefaultencoding('utf8')

print "Content-Type: text/html charset=utf-8 \n"

fileitem = ''
def get_cgi_file():
    ''''''
    global fileitem,device_id,maxDeviceID,maxDriverID,channelid,ChannelDeviceType
    form = cgi.FieldStorage()
    # 获取文件名
    fileitem = form['filename1']
    # 检测文件是否上传
    if fileitem.filename:
        # 去掉文件路径,获取文件名称
        fn = os.path.basename(fileitem.filename)
        open(global_var.uploadfile_path, 'wb').write(fileitem.file.read())
        #message = '文件"' + fn + '" 上传成功!'
        #print message
    else:
        message = '没有文件上传!'
        print message

def convert_gbk2utf8():
    data_list = []
    fd = open(global_var.uploadfile_path, 'rb')
    csvfd = csv.reader(fd)
    for c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14 in csvfd:
        c1_u = c1.decode('gb2312').encode('utf-8')
        c2_u = c2.decode('gb2312').encode('utf-8')
        c3_u = c3.decode('gb2312').encode('utf-8')
        c4_u = c4.decode('gb2312').encode('utf-8')
        c4_u = c4.decode('gb2312').encode('utf-8')
        c5_u = c5.decode('gb2312').encode('utf-8')
        c6_u = c6.decode('gb2312').encode('utf-8')
        c7_u = c7.decode('gb2312').encode('utf-8')
        c8_u = c8.decode('gb2312').encode('utf-8')
        c9_u = c9.decode('gb2312').encode('utf-8')
        c10_u = c10.decode('gb2312').encode('utf-8')
        c11_u = c11.decode('gb2312').encode('utf-8')
        c12_u = c12.decode('gb2312').encode('utf-8')
        c13_u = c13.decode('gb2312').encode('utf-8')
        c14_u = c14.decode('gb2312').encode('utf-8')
        data_row_list = [c1_u,c2_u,c3_u,c4_u,c5_u,c6_u,c7_u,c8_u,c9_u,c10_u,c11_u,c12_u,c13_u,c14_u]
        data_list.append(data_row_list)
    fd.close()
    #log.write_debug(data_list)
    return data_list

def analy_csv_file(data_list):
    for rownum in range(len(data_list)):
            if rownum == 0:
                attrib = data_list[rownum]
            else:
                for i in range(len(attrib)):
                    #这里循环取数据,依据是列名
                    if attrib[i] == '你的列名':
                        print data_list[rownum][i]

if __name__ == '__main__':
    log = Loginfo.Loginfo()
    get_cgi_file()
    try:
        data_list = convert_gbk2utf8()
    except Exception as e:
        print("正在导入的表格列数不对,请检查!")
        deleteDevice()

删了一些函数,这样应该可以看得懂吧,c14_u是列,有多少列就多少个,这是转换编码。analy_csv_file(data_list)里面对拿到的文件做处理

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com