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 相关文章推荐
动态创建类实例代码
Oct 07 Python
Python实现远程调用MetaSploit的方法
Aug 22 Python
用Python写王者荣耀刷金币脚本
Dec 21 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
Apr 21 Python
修复 Django migration 时遇到的问题解决
Jun 14 Python
python实现年会抽奖程序
Jan 22 Python
python交互界面的退出方法
Feb 16 Python
Python实现插入排序和选择排序的方法
May 12 Python
python中selenium操作下拉滚动条的几种方法汇总
Jul 14 Python
python开头的coding设置方法
Aug 08 Python
Python有参函数使用代码实例
Jan 06 Python
pytorch对梯度进行可视化进行梯度检查教程
Feb 04 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 5.5版本的array_column()函数
2014/10/24 PHP
异步javascript的原理和实现技巧介绍
2012/11/08 Javascript
javascript调试之DOM断点调试法使用技巧分享
2014/04/15 Javascript
JavaScrip调试技巧之断点调试
2015/10/22 Javascript
js实现返回顶部效果
2017/03/10 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
AngulaJS路由 ui-router 传参实例
2017/04/28 Javascript
jstree单选功能的实现方法
2017/06/07 Javascript
Vue学习笔记进阶篇之单元素过度
2017/07/19 Javascript
Javascript中 toFixed四舍六入方法
2017/08/21 Javascript
基于vue-simplemde实现图片拖拽、粘贴功能
2018/04/12 Javascript
JavaScript刷新页面的几种方法总结
2019/03/28 Javascript
微信小程序判断页面是否从其他页面返回的实例代码
2019/07/03 Javascript
layui实现三级导航菜单
2019/07/26 Javascript
[01:10:48]完美世界DOTA2联赛PWL S2 GXR vs PXG 第一场 11.18
2020/11/18 DOTA
Python获取Windows或Linux主机名称通用函数分享
2014/11/22 Python
深入浅出分析Python装饰器用法
2017/07/28 Python
python3.4下django集成使用xadmin后台的方法
2017/08/15 Python
Python paramiko模块的使用示例
2018/04/11 Python
Python中使用Counter进行字典创建以及key数量统计的方法
2018/07/06 Python
python manage.py runserver流程解析
2019/11/08 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
2020/02/28 Python
Python定义一个函数的方法
2020/06/15 Python
Data URI scheme详解和使用实例及图片base64编码实现方法
2014/05/08 HTML / CSS
纯HTML5+CSS3制作生日蛋糕(代码易懂)
2016/11/16 HTML / CSS
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
亚洲颇具影响力的男性在线购物零售商:His
2019/11/24 全球购物
C++面试题:关于链表和指针
2013/06/05 面试题
简短的公司员工自我评价分享
2013/11/13 职场文书
工作决心书范文
2014/03/11 职场文书
房屋租赁协议书
2014/10/18 职场文书
销售2014年度工作总结
2014/12/08 职场文书
毕业实习计划书
2015/01/16 职场文书
2015年学生会工作总结范文
2015/03/31 职场文书
管理者日常工作必备:22条企业管理流程模板!
2019/07/12 职场文书
Django对接elasticsearch实现全文检索的示例代码
2021/08/02 Python