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中enumerate的用法实例解析
Aug 18 Python
python执行等待程序直到第二天零点的方法
Apr 23 Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
Nov 16 Python
Python中matplotlib中文乱码解决办法
May 12 Python
python中urlparse模块介绍与使用示例
Nov 19 Python
Python Selenium Cookie 绕过验证码实现登录示例代码
Apr 10 Python
Python实现简单查找最长子串功能示例
Feb 26 Python
python 实现Flask中返回图片流给前端展示
Jan 09 Python
Tensorflow全局设置可见GPU编号操作
Jun 30 Python
基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达的源码
Feb 18 Python
【超详细】八大排序算法的各项比较以及各自特点
Mar 31 Python
一篇文章弄懂Python关键字、标识符和变量
Jul 15 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使用递归方式列出当前目录下所有文件的方法
2015/06/02 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
2019/05/01 PHP
Laravel Reponse响应客户端示例详解
2020/09/03 PHP
使用JQUERY Tabs插件宿主IFRAMES
2010/01/01 Javascript
javascript中xml操作实现代码
2011/11/21 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
2014/03/19 Javascript
javascript实现输出指定行数正方形图案的方法
2015/08/03 Javascript
js验证真实姓名与身份证号是否匹配
2015/10/13 Javascript
jQuery中inArray方法注意事项分析
2016/01/25 Javascript
JS中使用FormData上传文件、图片的方法
2016/08/07 Javascript
老生常谈jquery id选择器和class选择器的区别
2017/02/12 Javascript
js实现滑动到页面底部自动加载更多功能
2017/02/15 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
2017/09/26 Javascript
webpack配置导致字体图标无法显示的解决方法
2018/03/06 Javascript
React项目动态设置title标题的方法示例
2018/09/26 Javascript
vue实现鼠标移入移出事件代码实例
2019/03/27 Javascript
DJANGO-ALLAUTH社交用户系统的安装配置
2014/11/18 Python
Python的Django框架中设置日期和字段可选的方法
2015/07/17 Python
Python的地形三维可视化Matplotlib和gdal使用实例
2017/12/09 Python
Python实现获取本地及远程图片大小的方法示例
2018/07/21 Python
Python3 合并二叉树的实现
2019/09/30 Python
pytorch 修改预训练model实例
2020/01/18 Python
python 三种方法实现对Excel表格的读写
2020/11/19 Python
利用html5 file api读取本地文件示例(如图片、PDF等)
2018/03/07 HTML / CSS
微信端html5页面调用分享接口示例
2018/03/14 HTML / CSS
德国在线香料制造商:Gewürzland
2020/03/10 全球购物
shell程序中如何注释
2012/01/28 面试题
幼儿园园长自我鉴定
2013/10/22 职场文书
电力公司个人求职信范文
2014/02/04 职场文书
《傅雷家书》教学反思
2014/04/20 职场文书
演讲稿祖国在我心中
2014/05/04 职场文书
小学校长汇报材料
2014/08/20 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书
用golang如何替换某个文件中的字符串
2021/04/25 Golang
Golang表示枚举类型的详细讲解
2021/09/04 Golang