# -*- 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 '''