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