- 积分
- 3638
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-10-21
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2020-12-22 14:34:49
|
显示全部楼层
源代码与注释
以下红色为关键注释,蓝色为次要注释
import os.path
from ftplib import FTP
import time
time_start=time.time() #记录程序开始时间
ftp=FTP()
ftp.connect("10.20.30.4",12345) #ftp服务器的IP和端口,按自己的填写
ftp.login("user","password") #连接的用户名,密码
curfold="/烟台/H_Scan" #远程目录
ftp.cwd(curfold) #进入远程目录
#ftp.dir打印的结果中含有文件夹名,结果保存在临时变量x中
x=[]
ftp.dir('.',x.append)
#从x的每个字符串中提取子文件夹名,保存在sonfolds中:
sonfolds=[]
for i in x:
cut=i.split(' ')
sonfolds.append(cut[-1])
del x
goodfolds=[] #所需的子文件夹名
for i in sonfolds:
if i.startswith('202011') and i.endswith('P'): #筛选子文件夹,这里需要2020年11月的数据
goodfolds.append(i)
n=len(goodfolds)
print('文件夹数=',n)
for i in range(n):
goodfold=goodfolds
#进入该文件夹:
ftp.cwd(curfold+'/'+goodfold)
#获取当期目录内的文件名:
files=ftp.nlst()
print('文件数=',len(files))
bufsize=1024 #设置的缓冲区大小
#准备把下载的文件存放于本地目录:
PcFold=r'G:\烟台\H_Scan'+'\\'+goodfold
#新建不存在的目录:
if not os.path.isdir(PcFold):
os.makedirs(PcFold) #该函数可新建多级目录
#把文件逐个传输到本地:
for file1 in files[0:1]: #先传1个试试
if os.path.isfile(PcFold+'\\'+file1):
print('文件已存在')
continue
#以写模式在本地打开文件:
file_handle=open(PcFold+'\\'+file1,"wb").write
#接收服务器上文件并写入本地文件:
ftp.retrbinary('RETR '+file1,file_handle,bufsize)
print('已拷贝进度:',i+1,'/',n)
ftp.quit() #退出ftp
time_end=time.time()#记录程序结束时间
print('程序耗时=',time_end-time_start)
|
|