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实现strcmp函数功能示例
Mar 25 Python
python 回调函数和回调方法的实现分析
Mar 23 Python
Python Web框架Tornado运行和部署
Oct 19 Python
详解Python实现多进程异步事件驱动引擎
Aug 25 Python
Django视图和URL配置详解
Jan 31 Python
pycharm打开命令行或Terminal的方法
Jan 16 Python
python sorted函数的小练习及解答
Sep 18 Python
有关Tensorflow梯度下降常用的优化方法分享
Feb 04 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
Feb 10 Python
Python脚本实现监听服务器的思路代码详解
May 28 Python
python中字符串的编码与解码详析
Dec 03 Python
python 可视化库PyG2Plot的使用
Jan 21 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
基于qmail的完整WEBMAIL解决方案安装详解
2006/10/09 PHP
php中使用__autoload()自动加载未定义类的实现代码
2013/02/06 PHP
深入解析PHP中的(伪)多线程与多进程
2013/07/01 PHP
PHP内核探索:变量存储与类型使用说明
2014/01/30 PHP
PHP代码优化的53个细节
2014/03/03 PHP
PHP输出日历表代码实例
2015/03/27 PHP
在WordPress中实现发送http请求的相关函数解析
2015/12/29 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
jquery foreach使用示例
2013/09/12 Javascript
jquery高级编程的最佳实践详解
2014/03/23 Javascript
JavaScript分秒倒计时器实现方法
2015/02/02 Javascript
js console.log打印对像与数组用法详解
2016/01/21 Javascript
关于angularJs指令的Scope(作用域)介绍
2016/10/25 Javascript
BootStrap轮播HTML代码(推荐)
2016/12/10 Javascript
javascript 作用于作用域链的详解
2017/09/27 Javascript
Laravel整合Bootstrap 4的完整方案(推荐)
2018/01/25 Javascript
Vue中使用clipboard实现复制功能
2018/09/05 Javascript
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
uni-app微信小程序登录授权的实现
2020/05/22 Javascript
利用打码兔和超人打码自封装的打码类分享
2014/03/16 Python
Python实现Tab自动补全和历史命令管理的方法
2015/03/12 Python
python numpy函数中的linspace创建等差数列详解
2017/10/13 Python
Python多层装饰器用法实例分析
2018/02/09 Python
python3实现windows下同名进程监控
2018/06/21 Python
python 批量下载bilibili视频的gui程序
2020/11/20 Python
Python爬虫自动化爬取b站实时弹幕实例方法
2021/01/26 Python
H&M美国官网:欧洲最大的服饰零售商
2016/09/07 全球购物
更夫岗位责任制
2014/02/11 职场文书
个人银行贷款担保书
2014/04/01 职场文书
安全生产目标责任书
2014/04/14 职场文书
领导班子作风建设年个人整改措施
2014/09/29 职场文书
单位法人授权委托书范本
2014/10/09 职场文书
2015秋季开学典礼演讲稿
2015/07/16 职场文书
国庆节到了,利用JS实现一个生成国庆风头像的小工具 详解实现过程
2021/10/05 Javascript
virtualenv隔离Python环境的问题解析
2022/06/21 Python