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 相关文章推荐
Python中字符串的修改及传参详解
Nov 30 Python
Flask框架通过Flask_login实现用户登录功能示例
Jul 17 Python
python 自动重连wifi windows的方法
Dec 18 Python
django2.0扩展用户字段示例
Feb 13 Python
Python生成词云的实现代码
Jan 14 Python
Django框架models使用group by详解
Mar 11 Python
python 使用raw socket进行TCP SYN扫描实例
May 05 Python
python ETL工具 pyetl
Jun 07 Python
Prometheus开发中间件Exporter过程详解
Nov 30 Python
python实现跨年表白神器--你值得拥有
Jan 04 Python
pycharm 实现复制一行的快捷键
Jan 15 Python
你需要掌握的20个Python常用技巧
Feb 28 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安装攻略:常见问题解答(三)
2006/10/09 PHP
PHPStorm+XDebug进行调试图文教程
2016/06/13 PHP
Javascript下的keyCode键码值表
2007/04/10 Javascript
JavaScript中也使用$美元符号来代替document.getElementById
2010/06/19 Javascript
document.forms[].submit()使用介绍
2014/02/19 Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
2015/02/28 Javascript
Javascript 事件冒泡机制详细介绍
2016/10/10 Javascript
详谈for循环里面的break和continue语句
2017/07/20 Javascript
JS运动改变单物体透明度的方法分析
2018/01/23 Javascript
MUI 实现侧滑菜单及其主体部分上下滑动的方法
2018/01/25 Javascript
ES6中let 和 const 的新特性
2018/09/03 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
详解如何运行vue项目
2019/04/15 Javascript
js实现登录时记住密码的方法分析
2020/04/05 Javascript
浅谈js数组splice删除某个元素爬坑
2020/10/14 Javascript
关于JavaScript中异步/等待的用法与理解
2020/11/18 Javascript
[36:43]NB vs Optic 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
python编程线性回归代码示例
2017/12/07 Python
详谈python中冒号与逗号的区别
2018/04/18 Python
对numpy数据写入文件的方法讲解
2018/07/09 Python
在IPython中进行Python程序执行时间的测量方法
2018/11/01 Python
对python 生成拼接xml报文的示例详解
2018/12/28 Python
Python跳出多重循环的方法示例
2019/07/03 Python
Python内置加密模块用法解析
2019/11/25 Python
python更新数据库中某个字段的数据(方法详解)
2020/11/18 Python
Ray-Ban雷朋瑞典官方网站:全球领先的太阳眼镜品牌
2019/08/22 全球购物
英国时尚高尔夫服装购物网站:Trendy Golf
2020/01/10 全球购物
《维生素c的故事》教学反思
2014/02/18 职场文书
目标管理责任书
2014/04/15 职场文书
学校领导班子对照检查材料
2014/09/24 职场文书
2014年最新版离婚协议书范本
2014/11/25 职场文书
毕业纪念册寄语大全
2015/02/26 职场文书
首都博物馆观后感
2015/06/05 职场文书
2015年中秋放假通知范文
2015/08/18 职场文书
六一儿童节致辞稿(3篇)
2019/07/11 职场文书
经典格言警句:没有热忱,世间便无进步
2019/11/13 职场文书