Python搭建FTP服务器的方法示例


Posted in Python onJanuary 19, 2018

Python版本 3.6.2

使用的ftp包:pyftpdlib    pip install pyftpdlib就可以下载安装了

FTP协议下载上传文件在文件过大的情况下会比HTTP更具有优势,更为方便的实现断点上传和进度监控,下面是官方文档中的

基本方法

import os 
from pyftpdlib.authorizers import DummyAuthorizer 
from pyftpdlib.handlers import FTPHandler 
from pyftpdlib.servers import FTPServer 
 
def main(): 
  # 实例化用户授权管理 
  authorizer = DummyAuthorizer() 
  authorizer.add_user('user', '12345', 'path', perm='elradfmwMT')#添加用户 参数:username,password,允许的路径,权限 
  authorizer.add_anonymous(os.getcwd())#这里是允许匿名用户,如果不允许删掉此行即可 
 
  # 实例化FTPHandler 
  handler = FTPHandler 
  handler.authorizer = authorizer 
 
  # 设定一个客户端链接时的标语 
  handler.banner = "pyftpdlib based ftpd ready." 
 
  #handler.masquerade_address = '151.25.42.11'#指定伪装ip地址 
  #handler.passive_ports = range(60000, 65535)#指定允许的端口范围 
 
  address = (ipaddr, 21)#FTP一般使用21,20端口 
  server = FTPServer(address, handler)#FTP服务器实例 
 
  # set a limit for connections 
  server.max_cons = 256 
  server.max_cons_per_ip = 5 
 
  # 开启服务器 
  server.serve_forever() 
 
if __name__ == '__main__': 
  main()

开启ftp服务器后要确定防火墙开启了21,20端口,并且在客户端的浏览器中设置internet选项高级选项卡中的被动ftp的勾去掉之后才能登陆到ftp服务器

从Windows登录到服务器:

Python搭建FTP服务器的方法示例

利用Python从ftp服务器上下载文件

from ftplib import FTP 
ftp=FTP() 
ftp.connect('localhost',21)#localhost改成服务器ip地址 
ftp.login(user='user',passwd='12345') 
 
file=open('f://ftpdownload/test.txt','wb') 
ftp.retrbinary("RETR test.txt",file.write,1024)#从服务器上下载文件 1024字节一个块 
ftp.set_debuglevel(0) 
ftp.close()

FTP服务器事件回调函数:

class MyHandler(FTPHandler):  
  def on_connect(self):#链接时调用 
    print "%s:%s connected" % (self.remote_ip, self.remote_port) 
 
  def on_disconnect(self):#关闭连接是调用 
    # do something when client disconnects 
    pass 
 
  def on_login(self, username):#登录时调用 
    # do something when user login 
    pass 
 
  def on_logout(self, username):#登出时调用 
    # do something when user logs out 
    pass 
 
  def on_file_sent(self, file):#文件下载后调用 
    # do something when a file has been sent 
    pass 
 
  def on_file_received(self, file):#文件上传后调用 
    # do something when a file has been received 
    pass 
 
  def on_incomplete_file_sent(self, file):#下载文件时调用 
    # do something when a file is partially sent 
    pass 
 
  def on_incomplete_file_received(self, file):#上传文件时调用 
    # remove partially uploaded files 
    import os 
    os.remove(file)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python连接sql server乱码的解决方法
Jan 28 Python
Python 递归函数详解及实例
Dec 27 Python
利用scrapy将爬到的数据保存到mysql(防止重复)
Mar 31 Python
Python利用pandas计算多个CSV文件数据值的实例
Apr 19 Python
对python中dict和json的区别详解
Dec 18 Python
Python中dict和set的用法讲解
Mar 28 Python
python3实现字符串操作的实例代码
Apr 16 Python
Django实现发送邮件功能
Jul 18 Python
Python实现栈和队列的简单操作方法示例
Nov 29 Python
Python进行特征提取的示例代码
Oct 15 Python
appium+python自动化配置(adk、jdk、node.js)
Nov 17 Python
Python Parser的用法
May 12 Python
python re模块findall()函数实例解析
Jan 19 #Python
Python enumerate索引迭代代码解析
Jan 19 #Python
5个很好的Python面试题问题答案及分析
Jan 19 #Python
Python3实现的画图及加载图片动画效果示例
Jan 19 #Python
Python实现将doc转化pdf格式文档的方法
Jan 19 #Python
python机器学习理论与实战(四)逻辑回归
Jan 19 #Python
python机器学习理论与实战(二)决策树
Jan 19 #Python
You might like
收音机频率指针指示不准确和灵敏度低问题
2021/03/02 无线电
Cygwin中安装PHP方法步骤
2015/07/04 PHP
php 输入输出流详解及示例代码
2016/08/25 PHP
简单的自定义php模板引擎
2016/08/26 PHP
JavaScript 自动分号插入(JavaScript synat:auto semicolon insertion)
2009/11/04 Javascript
一个基于jQuery的树型插件(OrangeTree)使用介绍
2012/05/03 Javascript
jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
2014/05/08 Javascript
node.js中的http.request方法使用说明
2014/12/14 Javascript
bootstrap flask登录页面编写实例
2016/11/01 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
2017/07/09 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
2017/11/11 Javascript
React中的refs的使用教程
2018/02/13 Javascript
对vue下点击事件传参和不传参的区别详解
2018/09/15 Javascript
js实现跟随鼠标移动的小球
2019/08/26 Javascript
layui table数据修改的回显方法
2019/09/04 Javascript
浅谈js数组splice删除某个元素爬坑
2020/10/14 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
微信小程序自定义胶囊样式
2020/12/27 Javascript
python生成随机验证码(中文验证码)示例
2014/04/03 Python
在Python的Bottle框架中使用微信API的示例
2015/04/23 Python
python类继承用法实例分析
2015/05/27 Python
Python2.7环境Flask框架安装简明教程【已测试】
2018/07/13 Python
python实现的config文件读写功能示例
2019/09/24 Python
python中把元组转换为namedtuple方法
2020/12/09 Python
Emporio Armani腕表天猫官方旗舰店:乔治·阿玛尼为年轻人设计的副线品牌
2017/07/02 全球购物
Linux内核产生并发的原因
2016/11/08 面试题
大学学习生活感言
2014/01/18 职场文书
艺校音乐专业自我鉴定范文
2014/03/01 职场文书
优质护理服务演讲稿
2014/05/07 职场文书
八荣八耻的活动方案
2014/08/16 职场文书
2014幼儿园大班工作总结
2014/11/10 职场文书
2014年医院党建工作总结
2014/12/20 职场文书
统计工作个人总结
2015/03/03 职场文书
入学证明
2015/06/23 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书
MySQL如何使用使用Xtrabackup进行备份和恢复
2021/06/21 MySQL