近日要实现FTP自动上传下载功能,但在办公区域受网络限制导致失败,最终研究通过办公区域的代理完成连接,并实现FTP上传和下载功能,同时将已上传和已下载的文件移动到默认的备份目录,保证定时任务不会重复获取。功能通过python实现,在网络上FTP代理登录功能可实现的比较少,贴在这里mark一下,话不多说,直接上代码。

此处param.py作为参数配置文件导入,将就不贴出来了。

# -*- coding: utf-8 -*-
'''
@author:June 六月城主
@file:ftp_proxy.py
@time:2020/2/10 11:05
'''
from ftplib import FTP
import socks
import socket
import os
import shutil
import param'''通过代理连接FTP服务器,并实现上传和下载功能,完成上传或下载后,将目录下的文件移动至备份目录
'''
class ftp_proxy():def __init__(self,proxy_host,proxy_port,ftp_host,ftp_user,ftp_password):#初始化ftp参数self.proxy_host = proxy_hostself.proxy_port = proxy_portself.ftp_host = ftp_hostself.ftp_user = ftp_userself.ftp_password = ftp_password#设置ftp代理def setProxy(self):socks.set_default_proxy(socks.HTTP,self.proxy_host,self.proxy_port,)socket.socket = socks.socksocket#ftp登录def ftpLogin(self):ftp = FTP(self.ftp_host)ftp.set_debuglevel(1)ftp.login(user = self.ftp_user,passwd = self.ftp_password)return ftp#下载FTP服务器远程目录文件,并将远程目录文件移到远程的备份目录
def downloadfile(ftp, remotepath, localpath,bakpath):ftp.cwd(remotepath) # 设置FTP远程目录(路径)list = ftp.nlst() # 获取目录下的文件,获得目录列表#ftp.delete('test.txt')for name in list:print(name)path = localpath + name # 定义文件保存路径f = open(path, 'wb') # 打开要保存文件filename = 'RETR ' + name # 保存FTP文件ftp.retrbinary(filename, f.write) # 保存FTP上的文件ftp.set_debuglevel(0) #关闭调试f.close()#关闭文件ftp.rename(name,bakpath+name)#上传本地文件到FTP服务器,并将上传的文件移到本地备份目录
def uploadfile(ftp,remotepath, localpath,bakpath):bufsize = 1024filecount = 0for parent, dirnames, filenames in os.walk(localpath):for filename in filenames:if 'handle' in filename:filecount = filecount+1file = open(localpath+filename, 'rb')#上传目标文件ftp.storbinary('STOR ' + remotepath+filename, file, bufsize)ftp.set_debuglevel(0)file.close()#移动本地文件shutil.move(localpath+filename,bakpath+filename)print('upload '+str(filecount) + ' files')if __name__ == '__main__':#获取配置文件的参数值#获取ftp连接参数ftp_params = param.ftp_paramsproxy_host = ftp_params.get('proxy_host')proxy_port = ftp_params.get('proxy_port')ftp_host = ftp_params.get('ftp_host')ftp_user = ftp_params.get('ftp_user')ftp_password = ftp_params.get('ftp_password')print('验证ftp_params参数:'+str(ftp_params))#h获取下载的目录参数download_path = param.download_pathdownl_remotepath =download_path.get('remotepath')downl_localpath = download_path.get('localpath')downl_bakpath = download_path.get('bakpath')print('验证download_path参数:' + str(download_path))#获取上传的目录参数upload_path =param.upload_pathupload_remotepath = upload_path.get('remotepath')upload_localpath = upload_path.get('localpath')upload_bakpath = upload_path.get('bakpath')print('验证upload_path参数:' + str(upload_path))ftp_proxy = ftp_proxy(proxy_host,proxy_port,ftp_host,ftp_user,ftp_password)ftp_proxy.setProxy()ftp = ftp_proxy.ftpLogin()downloadfile(ftp, downl_remotepath,downl_localpath ,downl_bakpath)uploadfile(ftp,upload_remotepath,upload_localpath,upload_bakpath)ftp.quit()print('完成ftp上传和下载功能')

代理连接FTP实现上传和下载功能相关推荐

  1. python连接ftp并上传、下载文件

    # -*- coding:utf-8 -*- """ Created on 2019年12月11日 :封装FTP文件上传与下载函数 @author: dch " ...

  2. 【SpringBoot】:springboot整合FTP文件上传与下载功能

    导入依赖包 <dependency><groupId>commons-net</groupId><artifactId>commons-net</ ...

  3. 【Python学习 】Python实现的FTP上传和下载功能

    一.背景 最近公司的一些自动化操作需要使用Python来实现FTP的上传和下载功能.因此参考网上的例子,撸了一段代码来实现了该功能,下面做个记录. 二.ftplib介绍 Python中默认安装的ftp ...

  4. 关于FileZilla连接FTP站点上传下载文件

    关于FileZilla连接FTP站点上传下载文件 浏览器搜索FileZilla官网:https://www.filezilla.cn/download 根据自己操作系统安装 安装完成之后的启动界面是这 ...

  5. php从ftp下载文件到本地,php使用ftp实现文件上传与下载功能

    本文实例为大家分享了php ftp文件上传与下载的具体代码,供大家参考,具体内容如下 ftp文件上传 php自带有ftp操作的函数包,一个比较简单实现的ftp文件上传操作可以通过以下几个步骤来完成: ...

  6. linux 关闭开机 ftp,解决linux ftp匿名上传、下载开机自启问题

    如果在平时学习,工作中经常使用 ftp 服务器 ,可以设置成开机自启,在设置之前要先了解几个关于自启的命令: 1.chkconfig 命令 主要作用:用于检查,设置系统的各种服务.其中有几个重要参数, ...

  7. linux ftp匿名只能下载,解决linux ftp匿名上传、下载开机自启问题

    解决linux ftp匿名上传.下载开机自启问题 如果在平时学习,工作中经常使用 FTP 服务器 ,可以设置成开机自启,在设置之前要先了解几个关于自启的命令: 1.chkconfig 命令 主要作用: ...

  8. 项目实战|C#Socket通讯方式改造(一)--Socket实现Ftp的上传和下载

    学更好的别人, 做更好的自己. --<微卡智享> 本文长度为1869字,预计阅读5分钟 前言 好久没写过C#的文章了,主要原因最近也很少动C#项目的代码,所以也没什么可写的,最近是一个老项 ...

  9. MinIO基本使用(实现上传、下载功能)

    MinIO基本使用(实现上传.下载功能) 1.简介 2.下载和安装 3.启动服务端 4.创建User和Bucket 4.1 创建User 4.1.1 生成accessKey和secretKey 4.2 ...

最新文章

  1. 【笔记】微软onedirve云存储使用小结
  2. OpenCV相交凸intersectConvex的实例(附完整代码)
  3. HBase不同版本集群之间数据迁移
  4. 我的世界服务器无限繁殖,我的世界村民无限繁殖方法_我的世界如何无限繁殖村民_牛游戏网...
  5. 阿里云技术白皮书_对阿里重磅发布的云原生架构白皮书的初步解读
  6. 接口方法上的注解无法被@Aspect声明的切面拦截的原因分析
  7. (转)shiro权限框架详解01-权限理论介绍
  8. 金蝶K3服务器安装及配置
  9. tf15: 中文语音识别【转】
  10. 视频教程-Java IO流精讲下-Java
  11. 嵌入式Linux入门-手把手教你初始化SDRAM(附代码)
  12. 云服务器添加交换分区
  13. 钉钉如何群里定时发送文件_使用钉钉APP实现多人在线协同编辑文档
  14. 2021年深圳市专精特新中小企业申报要求及遴选内容指南,包括补贴20万
  15. 大屏数据可视化 B端UI设计后台PC网页UI设计U3D+可视化落地教程
  16. LateX使用笔记(持续更新)
  17. Android studio 试用小技巧
  18. vue引入阿里妈妈的图标
  19. 中国节日主题网站设计 红色建军节HTML+CSS 红色中国文化主题网站设计 HTML学生作业网页
  20. python编程入门课 视频-为了学习Python,我汇总了这10个免费的视频课程!

热门文章

  1. 恭喜!第十届“吴文俊人工智能科学技术奖”揭晓!华章多位作译者获奖
  2. Stack的概念和算法应用
  3. 信号频率和带宽的关系
  4. NUCLEO-F767ZI以太网功能实现笔记本电脑不开盖开机
  5. 【CCF】ISBN号码
  6. 二手闲置物品交易数据快照
  7. sqlserver 根据日期计算年龄问题
  8. PTA 计算年龄问题 (30 分)
  9. 解码百度核心:移动的无色墙,AI的无形剑
  10. 根据包名打开其他应用。