zoukankan      html  css  js  c++  java
  • python 从ftp下载数据

      《hadoop权威指南》的天气数据可以在ftp://ftp3.ncdc.noaa.gov/pub/data/noaa下载,在网上看到这个数据好开心,打开ftp发现个问题,呀呀,这么多文件啊,我一个个去点另存为,得点到啥时候啊,迅雷应该有批量下载,只是我没找到,估计是我浏览器把迅雷禁掉了,干脆自己用python写一个实现下载好了,网上早了一下,发现很简单啊

    #!/usr/bin/python
    #-*- coding: utf-8 -*-
    
    from ftplib import FTP
    
    def ftpconnect():
        ftp_server = 'ftp3.ncdc.noaa.gov'
        username = ''
        password = ''
        ftp=FTP()
        ftp.set_debuglevel(2) #打开调试级别2,显示详细信息
        ftp.connect(ftp_server,21) #连接
        ftp.login(username,password) #登录,如果匿名登录则用空串代替即可
        return ftp
        
    def downloadfile():  
        ftp = ftpconnect()    
        #print ftp.getwelcome() #显示ftp服务器欢迎信息
        datapath = "/pub/data/noaa/"
        year=1911
        while year<=1930:
            path=datapath+str(year)
            li = ftp.nlst(path)
            for eachFile in li:
                localpaths = eachFile.split("/")
                localpath = localpaths[len(localpaths)-1]
                localpath='weatherdata/'+str(year)+'--'+localpath#把日期放在最前面,方便排序
                bufsize = 1024 #设置缓冲块大小      
                fp = open(localpath,'wb') #以写模式在本地打开文件
                ftp.retrbinary('RETR ' + eachFile,fp.write,bufsize) #接收服务器上文件并写入本地文件
            year=year+1
        ftp.set_debuglevel(0) #关闭调试
        fp.close()
        ftp.quit() #退出ftp服务器
    
    
    if __name__=="__main__":
        downloadfile()    
  • 相关阅读:
    BootStrap 学习笔记一
    ROW_NUMBER() OVER的用法
    Angularjs学习笔记(五)----显示和格式化数据
    &&和||的妙用
    形象的讲解angular中的$q与promise(转)
    Angularjs学习笔记(四)----与后端服务器通信
    Angularjs学习笔记(一)
    Angularjs学习笔记(二)----模块
    Angularjs学习笔记(三)----依赖注入
    StringBuilder类型
  • 原文地址:https://www.cnblogs.com/fengfenggirl/p/2998997.html
Copyright © 2011-2022 走看看