python ftp 按目录结构上传下载的实现代码


Posted in Python onSeptember 12, 2018

具体代码如下所示:

#!/usr/bin/python
# coding=utf-8
from ftplib import FTP
import time
import os
def __ftp_upload(ftp,local,remote,isDel=False):
  if os.path.isdir(local):
    for f in os.listdir(local):
      if os.path.isdir(local+f):
        try:
          ftp.cwd(remote+f)
        except:
          ftp.mkd(remote+f)
        print local+f
        __ftp_upload(ftp,local+f+'/',remote+f+'/',isDel)
      else:
        print remote+f
        print local+f
        fp = open(local+f, 'rb')
        ftp.storbinary('STOR ' + remote + f, fp, 4096)
        fp.close()
        if (isDel==True):
          os.remove(local)
  else:
    fp = open(local+f, 'rb')
    ftp.storbinary('STOR ' + remote + f, fp, 4096)
    fp.close()
    if (isDel==True):
      os.remove(local)
def ftp_upload(host,port,username,password,local,remote,isDel=False):
  ftp = FTP()
  try:
    ftp.connect(host,port)
    ftp.login(username,password)
  except:
    return False
  try:
    __ftp_upload(ftp,local,remote,False)
  except Exception,e:
    print e
  ftp.close()
  return True
def ftp_download(host,port,username,password,local,remote):
  ftp = FTP()
  ftp.connect(host,port)
  ftp.login(username,password)
  ret = False
  try:
    if os.path.isdir(local):
      for f in ftp.dir(remote):
        fp = open(local+f, 'wb')
        ftp.retrbinary('RETR ' + remote + f, fp.write, 4096)
        fp.close()
    else:
      fp = open(local, 'wb')
      ftp.retrbinary('RETR ' + remote, fp.write, 4096)
      fp.close()
    ret = True
  except Exception,e:
    print ("download exception:\n",e)
  ftp.close()
  return ret
if __name__=='__main__':
  host = '*.*.*.*'
  port = '21'
  username = 'xxx'
  password = 'xxx'
  ftp_upload(host,port,username,password,'/home/pi/work/xx/','/home/ubuntu/xx/',False)
  print 'download'
  ftp_download(host,port,username,password,'/home/pi/work/xx/hh.txt','/home/ubuntu/xx/hh.txt')

只完成了按目录结构上传,下载还没弄好。

补充:下面看下Python ftp 上传和下载

工具

python3
ftplib

上传

from ftplib import FTP
ftp = FTP(host='127.0.0.1', user='test', passwd='test') #创建
ftp.cwd('/home/test/ftp/') #上传路径
fd = open('test.txt', 'rb') #以只读的方式打开要上传的文件
ftp.storbinary('STOR test.txt', fd) #上传文件
fd.close()
ftp.quit() #退出登录
ftp.close() #关闭连接

下载

from ftplib import FTP
ftp = FTP(host='127.0.0.1', user='test', passwd='test') #创建
ftp.cwd('/home/test/ftp/') #服务器下载路径
fd = open('test.txt', 'wb') #以只写的方式打开要下载的文件
ftp.retrbinary('RETR test.txt', fd.write, 2048) #下载文件
fd.close()
ftp.quit() #退出登录
ftp.close() #关闭连接

总结

以上所述是小编给大家介绍的jpython ftp 按目录结构上传下载的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python3.5.3下配置opencv3.2.0的操作方法
Apr 02 Python
用Python实现数据的透视表的方法
Nov 16 Python
python实现最小二乘法线性拟合
Jul 19 Python
Python学习笔记之错误和异常及访问错误消息详解
Aug 08 Python
Python range、enumerate和zip函数用法详解
Sep 11 Python
使用IDLE的Python shell窗口实例详解
Nov 19 Python
opencv-python 读取图像并转换颜色空间实例
Dec 09 Python
python垃圾回收机制(GC)原理解析
Dec 30 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
May 07 Python
Restful_framework视图组件代码实例解析
Nov 17 Python
利用Python将多张图片合成视频的实现
Nov 23 Python
python 如何执行控制台命令与操作剪切板
May 20 Python
python3结合openpyxl库实现excel操作的实例代码
Sep 11 #Python
python创建文件备份的脚本
Sep 11 #Python
python实现飞机大战
Sep 11 #Python
pygame实现简易飞机大战
Sep 11 #Python
python实现飞机大战微信小游戏
Mar 21 #Python
python实现微信小程序自动回复
Sep 10 #Python
python中map的基本用法示例
Sep 10 #Python
You might like
PHP网页游戏学习之Xnova(ogame)源码解读(九)
2014/06/24 PHP
thinkphp获取栏目和文章当前位置的方法
2014/10/29 PHP
thinkPHP下的widget扩展用法实例分析
2015/12/26 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
2016/07/13 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
2017/03/16 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
2019/10/21 PHP
extjs grid取到数据而不显示的解决
2008/12/29 Javascript
一些Javascript的IE和Firefox(火狐)兼容性的问题总结及常用例子
2009/05/21 Javascript
toString()一个会自动调用的方法
2010/02/08 Javascript
IE8 中使用加速器(Activities)
2010/05/14 Javascript
JavaScript格式化数字的函数代码
2010/11/30 Javascript
谈谈JavaScript中的函数与闭包
2013/04/14 Javascript
深入理解JQuery keyUp和keyDown的区别
2013/12/12 Javascript
用jquery修复在iframe下的页面锚点失效问题
2014/08/22 Javascript
JS 使用for循环遍历子节点查找元素
2014/09/06 Javascript
Nodejs学习笔记之Stream模块
2015/01/13 NodeJs
如何高效率去掉js数组中的重复项
2016/04/12 Javascript
node.js中grunt和gulp的区别详解
2017/07/17 Javascript
webpack-url-loader 解决项目中图片打包路径问题
2019/02/15 Javascript
详解微信小程序调用支付接口支付
2019/04/28 Javascript
vue实现日历备忘录功能
2020/09/24 Javascript
vue2 拖动排序 vuedraggable组件的实现
2019/08/08 Javascript
vue 强制组件重新渲染(重置)的两种方案
2019/10/29 Javascript
django中send_mail功能实现详解
2018/02/06 Python
解决Mac安装scrapy失败的问题
2018/06/13 Python
Python global全局变量函数详解
2018/09/18 Python
python web自制框架之接受url传递过来的参数实例
2018/12/17 Python
详解有关PyCharm安装库失败的问题的解决方法
2020/02/02 Python
防沙治沙典型材料
2014/05/07 职场文书
2015年招商引资工作总结
2015/04/25 职场文书
担保书范文
2019/07/09 职场文书
创业计划书之宠物店
2019/09/19 职场文书
读《茶花女》有感:山茶花的盛开与凋零
2020/01/17 职场文书
Jupyter notebook 输出部分显示不全的解决方案
2021/04/24 Python
python 爬取华为应用市场评论
2021/05/29 Python
Python函数式编程中itertools模块详解
2021/09/15 Python