设为首页 加入收藏

TOP

近期对FTP及Excel数据处理的一些摸索(二)
2017-12-25 06:07:12 】 浏览:822
Tags:近期 FTP Excel 数据处理 一些 摸索
dir = os.path.dirname(os.path.abspath(__file__)) 6 print(base_dir) 7 sys.path.append(base_dir) 8 9 #当前文件所在目录data文件夹下的所有文件名以列表的形式存到file_list里 10 file_list = os.listdir(base_dir+"/data") 11 print(file_list) 12 13 #打开当前文件所在目录的settings.json文件 14 with open("settings.json","r") as f1: 15 settings = json.load(f1) 16 17 #以写的形式打开一个workbook 18 my_workbook = xlwt.Workbook() 19 20 for filename in file_list: 21 year = filename.split("_")[-2][:4] 22 date = filename.split("_")[-2][4:8] 23 24 #从json文件中获取到每个项目的配置文件,然后下载相应的行到Excel里 25 for setting in settings["items"]: 26 project_name = filename.split("_GHP")[0].split("SSTJEC_")[1] 27 if project_name == setting["item"]: 28 my_sheet = my_workbook.add_sheet(project_name + "_" + date) 29 with open(base_dir+"/data/"+filename) as f2: 30 lines = f2.readlines() 31 step = 0 32 33 #把所需要的数据写到Excel中 34 for nums,line in enumerate(lines): 35 if nums in setting["download_line"]: 36 re_time = line.split(",")[6] 37 out_file = line.split(",")[7] 38 energy = line.split(",")[-2] 39 unit = line.split(",")[10] 40 41 my_sheet.write(step,0,out_file) 42 my_sheet.write(step,1,re_time) 43 my_sheet.write(step,2,energy) 44 my_sheet.write(step,3,unit) 45 step += 1 46 47 my_workbook.save(base_dir+"/handle/" + year +" cmep_to_excel.xls")

 

运行handle文件后,得到写入Excel文件的结果如下:

 

 

成功的写入了Excel文件,对于我们同事来说,这个是一个皆大欢喜的结果,但是他还需要进行数据处理,所以我们想,索性帮他用代码把数据处理也做了,最后我们就写了一个result的文件,把他想要的两个时间内的数据做差,然后再写入另一个Excel中,下面是代码:

 

 1 import xlrd,xlwt
 2 import os,sys
 3 
 4 base_dir = os.path.dirname(os.path.abspath(__file__))
 5 print(base_dir)
 6 sys.path.append(base_dir)
 7 
 8 file_list = os.listdir(base_dir+"/handle/")
 9 print(file_list)
10 
11 my_workbook = xlwt.Workbook()
12 
13 for filename in file_list:
14     date,project = filename.split(" ")[0],filename.split(" ")[-1]
15 
16     if project == "cmep_to_excel.xls":
17 
18         myworkbook = xlrd.open_workbook((base_dir+"/handle/" + filename))
19         i = 0
20         o = 1
21         while o < len(myworkbook.sheets()):
22             frist_sheet = myworkbook.sheets()[i]
23             second_sheet = myworkbook.sheets()[o]
24             rows_num = second_sheet.nrows
25             print(rows_num)
26 
27             my_sheet = my_workbook.add_sheet(frist_sheet.cell(0,0).value.split("_GHP_")[0])
28             
29             #在每个表单的头一行添加表头
30             my_sheet.write(0,0,"数据类型")
31             my_sheet.write(0,1,"日期")
32             my_sheet.write(0,2,"数据")
33             my_sheet.write(0,3,"单位")
34             m = 1
35             n = 0
36             while n < rows_num:
37                 
38                 out_file = frist_sheet.cell(n,0).value
39                 re_time = frist_sheet.cell(n,1).value
40                 energy1 = float(frist_sheet.cell(n,2).value)
41                 unit = frist_sheet.cell(n,3).value
42 
43                 energy2 = float(second_sheet.cell(n,2).value)
44                 energy_output = energy2 - energy1
45 
46                 my_sheet.write(m,0,out_file)
47                 my_sheet.write(m,1,re_time)
48                 my_sheet.write(m,2,energy_output)
49                 my_sheet.write(m,3,unit)
50 
51                 m +=1
52                 n +=1
53             i += 2
54             o += 2
55 
56         my_workbook.save(base_dir+"/handle/" + date + " result.xls")

 

最后得到他想要的结果文件,以后对于他这趟差事来说,那不是简单到没朋友,自己运

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇RHEL 6.6下Python 2.6.6升级到Pyt.. 下一篇快速上手virtualenv

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目