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 爬虫的工具列表大全
Jan 31 Python
Python 爬虫学习笔记之多线程爬虫
Sep 21 Python
python getopt详解及简单实例
Dec 30 Python
转换科学计数法的数值字符串为decimal类型的方法
Jul 16 Python
分析python请求数据
Aug 19 Python
python实现决策树分类
Aug 30 Python
python获取地震信息 微信实时推送
Jun 18 Python
django 2.2和mysql使用的常见问题
Jul 18 Python
python列表每个元素同增同减和列表元素去空格的实例
Jul 20 Python
对python中url参数编码与解码的实例详解
Jul 25 Python
Python使用ElementTree美化XML格式的操作
Mar 06 Python
Python万能模板案例之matplotlib绘制直方图的基本配置
Apr 13 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中DOMElement操作xml文档实例演示
2013/03/26 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
2014/05/15 PHP
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
2014/07/04 PHP
javascript AutoScroller 函数类
2009/05/29 Javascript
JS获取地址栏参数的几种方法小结
2014/02/28 Javascript
用jquery实现的一个超级简单的下拉菜单
2014/05/18 Javascript
jquery datatable后台封装数据示例代码
2014/08/07 Javascript
jQuery判断元素上是否绑定了指定事件的方法
2015/03/17 Javascript
解析javascript中鼠标滚轮事件
2015/05/26 Javascript
JavaScript实现的圆形浮动标签云效果实例
2015/08/06 Javascript
jQuery带进度条全屏图片轮播特效代码分享
2020/06/28 Javascript
JS组件Bootstrap dropdown组件扩展hover事件
2016/04/17 Javascript
Node.js环境下JavaScript实现单链表与双链表结构
2016/06/12 Javascript
省市选择的简单实现(基于zepto.js)
2016/06/21 Javascript
D3.js封装文本实现自动换行和旋转平移等功能
2016/10/14 Javascript
js实现前端分页页码管理
2017/01/06 Javascript
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
2017/09/07 Javascript
nodejs基于WS模块实现WebSocket聊天功能的方法
2018/01/12 NodeJs
微信小程序实现用table显示数据库反馈的多条数据功能示例
2019/05/07 Javascript
vue中element 的upload组件发送请求给后端操作
2020/09/07 Javascript
Python中的MongoDB基本操作:连接、查询实例
2015/02/13 Python
python实现用户登陆邮件通知的方法
2015/07/09 Python
浅谈Python脚本开头及导包注释自动添加方法
2018/10/27 Python
python连接PostgreSQL数据库的过程详解
2019/09/18 Python
Python解析json代码实例解析
2019/11/25 Python
python进程的状态、创建及使用方法详解
2019/12/06 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
校园报刊亭创业计划书
2014/01/02 职场文书
文科生自我鉴定
2014/02/15 职场文书
平安校园建设方案
2014/05/02 职场文书
医学专业大学生求职信
2014/07/12 职场文书
社区学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
2014年化验员工作总结
2014/11/18 职场文书
致运动员加油稿
2015/07/21 职场文书
谢师宴家长答谢词
2015/09/30 职场文书
利用 JavaScript 构建命令行应用
2021/11/17 Javascript