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 相关文章推荐
Pyramid Mako模板引入helper对象的步骤方法
Nov 27 Python
python自定义类并使用的方法
May 07 Python
Python 专题二 条件语句和循环语句的基础知识
Mar 19 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
Apr 06 Python
Python for循环生成列表的实例
Jun 15 Python
对python以16进制打印字节数组的方法详解
Jan 24 Python
Django restframework 源码分析之认证详解
Feb 22 Python
使用python telnetlib批量备份交换机配置的方法
Jul 25 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
Oct 12 Python
python return逻辑判断表达式实现解析
Dec 02 Python
pandas 中对特征进行硬编码和onehot编码的实现
Dec 20 Python
python 实现图片批量压缩的示例
Dec 18 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
thinkphp3.x中变量的获取和过滤方法详解
2016/05/20 PHP
关于laravel 子查询 & join的使用
2019/10/16 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
use jscript List Installed Software
2007/06/11 Javascript
js树形控件脚本代码
2008/07/24 Javascript
JQuery 弹出框定位实现方法
2010/12/02 Javascript
jQuery News Ticker 基于jQuery的即时新闻行情展示插件
2011/11/05 Javascript
JS 打印界面的CSS居中代码适用所有浏览器
2014/03/19 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
js实现索引图片切换效果
2015/11/21 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
2017/09/06 Javascript
js图片查看器插件用法示例
2019/06/22 Javascript
layui表单验证select下拉框实现验证的方法
2019/09/05 Javascript
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
2019/12/23 Javascript
JavaScript中clientWidth,offsetWidth,scrollWidth的区别
2021/01/25 Javascript
Python是编译运行的验证方法
2015/01/30 Python
Python中利用函数装饰器实现备忘功能
2015/03/30 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
2018/10/29 Python
python使用循环打印所有三位数水仙花数的实例
2018/11/13 Python
详解python函数的闭包问题(内部函数与外部函数详述)
2019/05/17 Python
Python监听剪切板实现方法代码实例
2020/11/11 Python
使用css实现android系统的loading加载动画
2019/07/25 HTML / CSS
HTML5图片预览实例分享
2014/06/04 HTML / CSS
html5开发三八女王节表白神器
2018/03/07 HTML / CSS
《草虫的村落》教学反思
2014/02/16 职场文书
就业推荐表自我鉴定
2014/03/21 职场文书
买房协议书
2014/04/11 职场文书
敬老院活动总结
2014/04/28 职场文书
群众路线个人自我剖析材料
2014/10/07 职场文书
2015年重阳节活动总结
2015/03/24 职场文书
员工年度工作总结2015
2015/05/18 职场文书
2015年小学语文教学工作总结
2015/05/25 职场文书
大学生社区义工服务心得体会
2016/01/22 职场文书
《王者天下》第4季首话新剧照 4月9日正式开播
2022/04/07 日漫
我去timi了,一起去timi是什么意思?
2022/04/13 杂记