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运算符重载用法实例分析
Jun 01 Python
Python中断言Assertion的一些改进方案
Oct 27 Python
Python之re操作方法(详解)
Jun 14 Python
python web自制框架之接受url传递过来的参数实例
Dec 17 Python
python 实现敏感词过滤的方法
Jan 21 Python
python快速排序的实现及运行时间比较
Nov 22 Python
python从zip中删除指定后缀文件(推荐)
Dec 05 Python
Python 使用 environs 库定义环境变量的方法
Feb 25 Python
matlab中二维插值函数interp2的使用详解
Apr 22 Python
如何使用Python调整图像大小
Sep 26 Python
教你怎么用Python实现多路径迷宫
Apr 29 Python
python周期任务调度工具Schedule使用详解
Nov 23 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
php中判断一个字符串包含另一个字符串的方法
2007/03/19 PHP
php feof用来识别文件末尾字符的方法
2010/08/01 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
2015/12/28 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
2016/08/11 PHP
PHPCMS忘记后台密码的解决办法
2016/10/30 PHP
全面解析PHP面向对象的三大特征
2017/06/10 PHP
PHP token验证生成原理实例分析
2019/06/05 PHP
用JavaScript获取网页中的js、css、Flash等文件
2006/12/20 Javascript
ExtJS 下拉多选框lovcombo
2010/05/19 Javascript
jquery下组织javascript代码(js函数化)
2010/08/25 Javascript
jQuery实现友好的轮播图片特效
2015/01/12 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
JQuery fileupload插件实现文件上传功能
2016/03/18 Javascript
漫谈JS引擎的运行机制 你应该知道什么
2016/06/15 Javascript
Nodejs中 npm常用命令详解
2016/07/04 NodeJs
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
微信小程序  modal弹框组件详解
2016/10/27 Javascript
vue下的@change事件的实现
2019/10/25 Javascript
JS实现纵向轮播图(初级版)
2020/01/18 Javascript
详解Vue template 如何支持多个根结点
2020/02/10 Javascript
基于aotu.js实现微信自动添加通讯录中的联系人功能
2020/05/28 Javascript
JavaScript中的全局属性与方法深入解析
2020/06/14 Javascript
python 快速把超大txt文件转存为csv的实例
2018/10/26 Python
python读取并写入mat文件的方法
2019/07/12 Python
Pycharm中切换pytorch的环境和配置的教程详解
2020/03/13 Python
SKECHERS官方旗舰店:美国舒适运动休闲品牌
2017/12/22 全球购物
你们项目是如何进行变更控制的
2015/08/26 面试题
最新计算机专业自荐信
2013/10/16 职场文书
三严三实对照检查材料范文
2014/09/23 职场文书
2014年库房工作总结
2014/11/26 职场文书
2015年出纳个人工作总结
2015/04/02 职场文书
2019年“红色之旅”心得体会1000字(3篇)
2019/09/27 职场文书
Python pandas读取CSV文件的注意事项(适合新手)
2021/06/20 Python
【海涛解说】史上最给力比赛,挑战DOTA极限
2022/04/01 DOTA
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis
python如何利用cv2.rectangle()绘制矩形框
2022/12/24 Python