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 set集合类型操作总结
Nov 07 Python
Python中的赋值、浅拷贝、深拷贝介绍
Mar 09 Python
python多线程方式执行多个bat代码
Jun 07 Python
利用python实现简单的循环购物车功能示例代码
Jul 05 Python
python django 增删改查操作 数据库Mysql
Jul 27 Python
python+selenium实现京东自动登录及秒杀功能
Nov 18 Python
解读python logging模块的使用方法
Apr 17 Python
详解Python正则表达式re模块
Mar 19 Python
python+os根据文件名自动生成文本
Mar 21 Python
python中列表的含义及用法
May 26 Python
python如何操作mysql
Aug 17 Python
Django mysqlclient安装和使用详解
Sep 17 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基于curl实现随机ip地址抓取内容的方法
2016/10/11 PHP
Javascript 入门基础学习
2010/03/10 Javascript
初试jQuery EasyUI 使用介绍
2010/04/01 Javascript
JavaScript 计算图片加载数量的代码
2011/01/01 Javascript
禁止页面刷新让F5快捷键及右键都无效
2014/01/22 Javascript
javascript实现的元素拖动函数宿主为浏览器
2014/07/21 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
2015/10/26 Javascript
jQuery实现的文字hover颜色渐变效果实例
2016/02/20 Javascript
JavaScript实现倒计时跳转页面功能【实用】
2016/12/13 Javascript
JS实现焦点图轮播效果的方法详解
2016/12/19 Javascript
jQuery电话号码验证实例
2017/01/05 Javascript
微信小程序 用户数据解密详细介绍
2017/01/09 Javascript
Centos6.8下Node.js安装教程
2017/05/12 Javascript
Vue编写多地区选择组件
2017/08/21 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
JavaScript简单实现关键字文本搜索高亮显示功能示例
2018/07/25 Javascript
获取layer.open弹出层的返回值方法
2018/08/20 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
2019/04/29 Javascript
详解Python自建logging模块
2018/01/29 Python
python 用opencv调用训练好的模型进行识别的方法
2018/12/07 Python
CentOS7下安装python3.6.8的教程详解
2020/01/03 Python
在pycharm中debug 实时查看数据操作(交互式)
2020/06/09 Python
Keras设置以及获取权重的实现
2020/06/19 Python
opencv python 对指针仪表读数识别的两种方式
2021/01/14 Python
惠普新加坡官方商店:HP Singapore
2020/04/17 全球购物
土木工程毕业生自荐信
2013/11/12 职场文书
大学生自我鉴定书
2014/03/24 职场文书
2014年教研活动总结范文
2014/04/26 职场文书
投资建议书模板
2014/05/12 职场文书
日语专业毕业生自荐书
2014/06/18 职场文书
职业生涯规划书怎么写?
2014/09/14 职场文书
法英专业大学生职业生涯规划书范文
2014/09/22 职场文书
2014年政风行风工作总结
2014/11/22 职场文书
美丽心灵观后感
2015/06/01 职场文书
教师师德承诺书2016
2016/03/25 职场文书
React 并发功能体验(前端的并发模式)
2021/07/01 Javascript