zoukankan      html  css  js  c++  java
  • ftp 下载 服客防火墙启用情况下 ftp被动模式的设置

    # -*- coding:utf-8 -*-
    import sys
    import io
    import socket
    socket.setdefaulttimeout(200)
    
    #print(sys.stdout.encoding)
    #sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding="gb2312")
    
    
    '''
    if sys.getdefaultencoding() != 'utf-8':
        reload(sys)
    sys.setdefaultencoding('utf-8')
    '''
    
    
    """
    FTP常用操作
    """
    from ftplib import FTP
    import os
    import datetime
    import time
    ftp = FTP()
    ftp.set_pasv(False) 
    #ftp.encoding = 'GB2312'
    ftp.set_debuglevel(0)
    ftp.connect(host = "123.206",port = 21)
    ftp.login("","")
    #return ftp
    
    print(ftp)
    
    buffer_size = 1024
    print(ftp.nlst("rain10min"))#////ftplib.error_temp: 425 Unable to set up passive listening socket.
    print(ftp.dir())
    #print(ftp.nslt(""))
    #print(ftp.dir("3"))
    print(ftp.nlst("rain10min"))
    
    #枚举指定目录所有文件并下载
    
    #存储路径
    dataDir = "D:\yb\"
    ftpDataDir = ""
    
    #设置接受缓冲区
    #10240kb = 10M 
    #102400kb = 100M
    #1024 000 kb = 1Gb
    bufsize = 1024
    
    for i in ftp.nlst("rain10min"):
        print('x')
        print(i)
        #本地存储文件路径及名称
        dataDirFile = dataDir + i
        #dataDirFile = i
        print(dataDirFile)
         
        #远程ftp文件路径及名称
        ftpDataDirFile = ftpDataDir + i
        print(ftpDataDirFile)
        #print(type(os.path.getsize(dataDirFile)))
        
        try:
            if os.path.exists(dataDirFile):
                dataDirFileSize = os.path.getsize(dataDirFile)
                if dataDirFileSize == 0:
                    os.remove(dataDirFile)
                else:
                    print("文件%s已经下载,大小%d" %(dataDirFile,dataDirFileSize))
            else:
                fpf = open(dataDirFile,'wb')
                print("当前正在下载文件%s" % (dataDirFile))
                ftp.retrbinary('RETR %s' %ftpDataDirFile,fpf.write,bufsize)
                print(dataDirFile + "文件下载完成")
                #if os.path.getsize(dataDirFile)
                
            '''
            dataDirFileSize = os.path.getsize(dataDirFile)
            #print("%s 文件大小为%d " % (dataDirFile,dataDirFileSize))
            if dataDirFileSize == 0:
                #print(dataDirFile+ "文件内容为空,下载失败的文件,需要重新下载")
                #删除内容为空的文件,以便后面程序重新下载
                os.remove(dataDirFile)
                #print("删除错误下载空文件%s" % dataDirFile)
            elif os.path.exists(dataDirFile):
                print("%s文件已经存在" % dataDirFile)
                
                dataDirFileSize = os.path.getsize(dataDirFile)
                print(dataDirFileSize)
                
                if dataDirFileSize == 0:
                    #print(dataDirFile+ "文件内容为空,下载失败的文件,需要重新下载")
                    #删除内容为空的文件,以便后面程序重新下载
                
            #elif int(os.path.getsize(dataDirFile)) == 0:
                #print(dataDirFile)
            else:
                #pass
                
                fpf = open(dataDirFile,'wb')
                ftp.retrbinary('RETR %s' %ftpDataDirFile,fpf.write,bufsize)
                print(dataDirFile + "文件下载完成")
            '''
        except:
            print("异常错误")
        
        
        
        '''
        try:
            pass
        except:
            pass
        '''
    
  • 相关阅读:
    es删除索引
    真人快打11技能键位
    点到线段的距离
    行列快乐值
    按钮变色
    取数求和
    机器分配
    田忌赛马 问题
    雷达
    最小字典序
  • 原文地址:https://www.cnblogs.com/ruiy/p/14637277.html
Copyright © 2011-2022 走看看