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 随机数生成的代码的详细分析
May 15 Python
Python实现windows下模拟按键和鼠标点击的方法
Mar 13 Python
Python检测QQ在线状态的方法
May 09 Python
基于python yield机制的异步操作同步化编程模型
Mar 18 Python
Pycharm学习教程(3) 代码运行调试
May 03 Python
Python实现确认字符串是否包含指定字符串的实例
May 02 Python
python实现傅里叶级数展开的实现
Jul 21 Python
Python线程下使用锁的技巧分享
Sep 13 Python
Django ModelForm组件使用方法详解
Jul 23 Python
python 已知平行四边形三个点,求第四个点的案例
Apr 12 Python
Python趣味挑战之用pygame实现简单的金币旋转效果
May 31 Python
Python序列化模块JSON与Pickle
Jun 05 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/06 新手入门
深入解析yii权限分级式访问控制的实现(非RBAC法)
2013/06/13 PHP
[原创]smarty简单模板变量输出方法
2016/07/09 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
PHP面向对象学习之parent::关键字
2017/01/18 PHP
yii框架redis结合php实现秒杀效果(实例代码)
2017/10/26 PHP
yii2 上传图片的示例代码
2018/11/02 PHP
TextArea不支持maxlength的解决办法(jquery)
2011/09/13 Javascript
两种方法实现文本框输入内容提示消失
2013/03/17 Javascript
js获取某月的最后一天日期的简单实例
2013/06/22 Javascript
jquery中post方法用法实例
2014/10/21 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
2015/05/16 Javascript
Javascript复制实例详解
2016/01/28 Javascript
JavaScript中对JSON对象的基本操作示例
2016/05/21 Javascript
详解jQuery中的deferred对象的使用(一)
2016/05/27 Javascript
BootstrapValidator不触发校验的实现代码
2016/09/28 Javascript
jQuery EasyUi 验证功能实例解析
2017/01/06 Javascript
Javascript快速实现浏览器系统通知
2017/08/26 Javascript
Node.js使用Express.Router的方法
2017/11/14 Javascript
vueJs实现DOM加载完之后自动下拉到底部的实例代码
2018/08/31 Javascript
vue组件通信传值操作示例
2019/01/08 Javascript
JavaScript学习笔记之图片库案例分析
2019/01/08 Javascript
vue v-on:click传递动态参数的步骤
2020/09/11 Javascript
Python利用ansible分发处理任务
2015/08/04 Python
Python爬虫框架Scrapy实例代码
2018/03/04 Python
python基于FTP实现文件传输相关功能代码实例
2019/09/28 Python
python 实现汉诺塔游戏
2020/11/28 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
2020/11/28 Python
北美领先的智能产品购物网站:Wellbots
2018/06/11 全球购物
WWE美国职业摔角官方商店:WWE Shop
2018/11/15 全球购物
中文专业毕业生自荐信
2013/10/28 职场文书
房产销售经理职责
2013/12/20 职场文书
求职简历中个人的自我评价
2013/12/25 职场文书
学习心理学的体会
2014/11/07 职场文书
小学六年级毕业感言
2015/07/30 职场文书
解决Maven项目中 Invalid bound statement 无效的绑定问题
2021/06/15 Java/Android