1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | # -*- 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 ''' |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
2020-04-09 kolla-ansible
2018-04-09 python 爬虫气象气象定时报 气象预警推送
2016-04-09 Section %post does not end with %end
2016-04-09 Anaconda/kickstart
2016-04-09 CentOS7 iso ks
2016-04-09 Enter the path to the kernel header files for the 3.18.0-kali1-686-pae kerne vmware tool
2016-04-09 CentOS7 内核参数优化