python遍历excel文件并保存为excel文件

            这些天在做深度学习的时候,需要对原始数据进行预处理,所以写下了一些脚本用于对数据处理。源代码如下:

#!/usr/bin/python
# -*-coding: utf-8 -*-
import xlrd
import xlwt
import os
import numpy as np

filePath = u'E:\\one_year\\合并数据\\冷塔'
fileDir =  os.listdir(filePath)
#files = []
#fileSavePath = u'E:\\one_year\\合并数据\\冷冻水泵\\5'
biaotou1 = ['湿球温度(℃)A', '1#冷却塔冷却水进水温度(℃)', '1#冷却塔1#风机变频反馈', '1#冷却塔2#风机变频反馈', '1#板换冷却水水流量(M3/H)', '2#板换冷却侧水流量(M3/H)','3#板换冷却水水流量(M3/H)', '4#板换冷却侧水流量(M3/H)','1#冷水机组冷却水流量(M3/H)', '2#冷水机组冷却水流量(M3/H)', '3#冷水机组冷却水流量(M3/H)', '4#冷水机组冷却水流量(M3/H)','1#冷却塔冷却水出水温度(℃)', '冷却塔组CT-R-1']
biaotou2 = ['湿球温度(℃)A', '2#冷却塔冷却水进水温度(℃)', '2#冷却塔1#风机变频反馈', '2#冷却塔2#风机变频反馈', '1#板换冷却水水流量(M3/H)', '2#板换冷却侧水流量(M3/H)','3#板换冷却水水流量(M3/H)', '4#板换冷却侧水流量(M3/H)','1#冷水机组冷却水流量(M3/H)', '2#冷水机组冷却水流量(M3/H)', '3#冷水机组冷却水流量(M3/H)', '4#冷水机组冷却水流量(M3/H)','2#冷却塔冷却水出水温度(℃)', '冷却塔组CT-R-2']
biaotou3 = ['湿球温度(℃)A', '3#冷却塔冷却水进水温度(℃)', '3#冷却塔1#风机变频反馈', '3#冷却塔2#风机变频反馈', '1#板换冷却水水流量(M3/H)', '2#板换冷却侧水流量(M3/H)','3#板换冷却水水流量(M3/H)', '4#板换冷却侧水流量(M3/H)','1#冷水机组冷却水流量(M3/H)', '2#冷水机组冷却水流量(M3/H)', '3#冷水机组冷却水流量(M3/H)', '4#冷水机组冷却水流量(M3/H)','3#冷却塔冷却水出水温度(℃)', '冷却塔组CT-R-3']
biaotou4 = ['湿球温度(℃)A', '4#冷却塔冷却水进水温度(℃)', '4#冷却塔1#风机变频反馈', '4#冷却塔2#风机变频反馈', '1#板换冷却水水流量(M3/H)', '2#板换冷却侧水流量(M3/H)','3#板换冷却水水流量(M3/H)', '4#板换冷却侧水流量(M3/H)','1#冷水机组冷却水流量(M3/H)', '2#冷水机组冷却水流量(M3/H)', '3#冷水机组冷却水流量(M3/H)', '4#冷水机组冷却水流量(M3/H)','4#冷却塔冷却水出水温度(℃)', '冷却塔组CT-R-4']
biaotou = []
biaotou.append(biaotou1)
biaotou.append(biaotou2)
biaotou.append(biaotou3)
biaotou.append(biaotou4)

for filepath in fileDir: ###解决中文乱码问题
    objectFile = filePath + r'\\' + filepath
    list1 = []
    list2 = []
    list3 = []
    list4 = []
    for fileName in os.listdir(objectFile):
        excelfile = objectFile  + r'\\' + fileName
        print(fileName)
        if int(fileName[6:7]) == 1:
           list1.append(excelfile)
        if int(fileName[6:7]) == 2:
           list2.append(excelfile)
        if int(fileName[6:7]) == 3:
           list3.append(excelfile)
        if int(fileName[6:7]) == 4:
           list4.append(excelfile)
    listAll = []
    listAll.append(list1)
    listAll.append(list2)
    listAll.append(list3)
    listAll.append(list4)
    tower_num = 0
    for lis in listAll:
        tower_num = 1 + tower_num
        matrix = [None] * len(lis)
        for i in range(len(lis)):
            fname = lis[i]
            print(fname)
            excelFile = xlrd.open_workbook(fname)
            try:
                data = excelFile.sheet_by_name("MySheet")
            except:
                print("在文件%s中没有找到sheet1,读取文件数据失败,要不你换换表格的名字?" % fname)
            nrows = data.nrows
            ncols = data.ncols
            matrix[i] = [0] * (nrows - 1)
            for m in range(nrows - 1):
                matrix[i][m] = ["0"] * ncols
            flag = 0
            for j in range(1, nrows):
                for k in range(0, ncols):
         #           print(str(data.cell(j, k).value))
                    if (str(data.cell(j, k).value) == '\\N')or(str(data.cell(j, k).value) == (str(0.0))):
                        flag = flag + 1
                        break
                    if (str(data.cell(j, ncols - 1).value) == '\\N') or (float(data.cell(j, ncols - 1).value) < 2.0):
                        flag = flag + 1
                        break
                    if (str(data.cell(j, 2).value) == '\\N' or str(data.cell(j, 3).value) == '\\N'):
                        flag = flag + 1
                        break
                    if ((float(data.cell(j, 2).value) + float(data.cell(j, 3).value)) > 50.0)and (float(data.cell(j, ncols - 1).value) < 12.0):
                        flag = flag + 1
                        break
                    if ((float(data.cell(j, 2).value) + float(data.cell(j, 3).value)) < 10.0) and (float(data.cell(j, ncols - 1).value) > 3.0):
                        flag = flag + 1
                        break
                    if ((float(data.cell(j, 2).value) + float(data.cell(j, 3).value)) < 50.0) and (float(data.cell(j, ncols - 1).value) < 5.0):
                        flag = flag + 1
                        break
                    matrix[i][j - 1 - flag][k] = data.cell(j, k).value
            matrix[i] = np.delete(matrix[i], np.s_[(nrows - flag - 1):nrows], axis=0)
        #print(matrix)
        fileExcel = xlwt.Workbook()
        sheet = fileExcel.add_sheet("MySheet")
        # 下面是把表头写上
        for i in range(0, len(biaotou[tower_num - 1])):
            sheet.write(0, i, biaotou[tower_num - 1][i])
        # 求和前面的文件一共写了多少行
        zh = 1
        for i in range(len(lis)):
            for j in range(len(matrix[i])):
                for k in range(len(matrix[i][j])):
                    sheet.write(zh, k, matrix[i][j][k])
                zh = zh + 1
        print("我已经将%d个文件合并成1个文件")
        fileSavePath = os.path.dirname(objectFile) + r'\\' +'0_'+ filepath + '月'
        print(fileSavePath + r'\\'+ str(tower_num) + "#lengta.xlsx")
        if not os.path.exists(fileSavePath):  ###创建月份文件夹
           os.makedirs(fileSavePath)
        fileExcel.save(fileSavePath + r'\\'+ str(tower_num) + "#lengta.xlsx")
  1.        我发现我写脚本有一个特点:就是想把一个功能写成函数的形式,然后函数之间相互调用。我觉得我缺乏顺序思想,过程思想,简单的问题不要复杂化
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值