设为首页 加入收藏

TOP

近期对FTP及Excel数据处理的一些摸索(一)
2017-12-25 06:07:12 】 浏览:269
Tags:近期 FTP Excel 数据处理 一些 摸索

一个多月没写随笔了,主要是发的东西,自己感觉也很垃圾,说又说回来,谁不是从垃圾变强的,所以不比比,还得努力。come on!!

Python学习也有段时间了,近期为了解决同事的一个难题,所以我们决定联系Python的同时,帮他解决这个难题。他的难题简单概括来说,每次他需要登录某单位的FTP服务器,下载好几个项目一个月的数据,然后找到其中地源热泵数据,全部复制到本地,然后打开每个项目的文件,一行一行的复制到Excel中,然后再进行数据处理,其中一个项目,一个时间的数据截图如下:

 

 

数据均是以逗号分割,可想而知,他每次仅仅的粘贴复制是有多费劲。所以我们就小试牛刀,把自己学的Python用上,用代码给他解决这个问题。

开始的时候也没有接触过FTP这个模块,所以最开始就想怎么能用代码,把想要的数据下载到本地,所以就学习了ftplib这个模块。然后逐层深入,怎么能下载每一天的,以至于到每个项目的每一天,最终的download的模块的所有的代码如下:

 

 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 import os,sys
 4 from datetime import datetime,timedelta
 5 
 6 from ftplib import FTP            #加载ftp模块
 7 import xlrd,xlwt
 8 
 9 
10 starttime = input("请输入想要下载文件的开始时间(格式:20170101):\n")
11 # endtime = parse(input("请输入想要下载文件的结束时间:\n"))                       
12 
13 # input_time = int(input("请输入想要下载前多少天的数据:\n"))
14 
15 base_dir = os.path.dirname(os.path.abspath(__file__))
16 print(base_dir)
17 sys.path.append(base_dir)
18 
19 ftp=FTP()                         #设置变量
20 #ftp.set_debuglevel(2)             #打开调试级别2,显示详细信息
21 ftp.connect("IP地址",21)          #连接的ftp sever和端口
22 ftp.login("用户名","密码>")      #连接的用户名,密码
23 
24 
25 
26 if ftp.cwd("目录" + starttime + "/"):    #进入远程目录
27     #print(ftp.nlst())
28     #downloadlist = ftp.nlst()               
29     bufsize=1024                      #设置的缓冲区大小
30     
31     for filename in ftp.nlst():
32         
33         if "GHP" in filename and "0800_001.cmep" in filename:           #需要下载的文件
34             file_handle=open(base_dir + "/data/" + filename,"wb").write #以写模式在本地打开文件
35             #file_handle=open(filename,"wb").write
36             ftp.retrbinary("RETR "+filename,file_handle,bufsize) #接收服务器上文件并写入本地文件
37 #            ftp.set_debuglevel(0)             #关闭调试模式
38             print(filename + "已经下载完成!")
39             
40         
41     ftp.cwd("/")
42 
43 print("您想要的文件已经全部下载完成,欢迎下次使用!")
44 ftp.quit()                        #退出ftp

 

download的执行结果是,是把所有项目某一天的代码全部下载到本地data目录下。下载的结果如下:

 

 

此时数据下载好了,就想着该如何把数据整理到Excel中了,所以还需要去学习Python中关于Excel的库,我们主要用的xlrd和xlwt,不懂的可以百度。我们就写了把后缀名微cmep的文件,写的Excel里的一个模块handle,在过程中我们发现,对于每一个项目来说,我们同事所想要的数据的行数都不相同,所以老师就给我们一个思路,写一个关于地源热泵每一个项目配置文件,就解决了这个问题。所以我们就动手写了一个json格式的配置文件,代码如下:

 

 1 import json
 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 
 9 file_list = os.listdir(base_dir + "/data/")
10 # print(file_list)
11 
12 output_data = {"items":[]}
13 
14 for filename in file_list:
15     with open(base_dir + "/data/" + filename) as f:
16         lines = f.readlines() 
17         # print(lines)
18         line_number = []
19         for nums,line in enumerate(lines):
20             if line.split(",")[10] == "GJ" or line.split(",")[10] == "kWh":
21                 line_number.append(nums)
22                
23         out_filename = filename.split("_GHP")[0].split("SSTJEC_")[1]
24         print(out_filename)
25         data = {"item":out_filename,"download_line":line_number}
26         output_data["items"].append(data)
27         
28 with open("settings.json","w") as f1:
29     json.dump(output_data,f1)

 

运行write_json.py的这个文件,得出每个项目所需要下载的不同行,然后我们根据这个配置文件,开始把需要的参数写入到Excel文件中,具体代码如下:

 

 1 import os,sys,json
 2 import xlrd,xlwt
 3 
 4 #把当前文件所在目录添加到电脑的环境变量
 5 base_
编程开发网
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇没有了 下一篇快速上手virtualenv

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

最新文章

热门文章

C 语言

C++基础

windows编程基础

linux编程基础

C/C++面试题目