ftplib模块的主要接口

# from ftplib import FTP                                   #加载ftp模块
# ftp=FTP() #设置变量
# ftp.set_debuglevel(2) #打开调试级别2,显示详细信息
# ftp.set_debuglevel(0) #关闭调试模式
# ftp.connect("IP","port") #连接的ftp sever和端口
# ftp.login("user","password") #连接的用户名,密码
# ftp.getwelcome() #打印出欢迎信息
# ftp.cmd("xxx/xxx") #进入远程目录
# ftp.quit() #退出ftp,失败抛异常
# ftp.cwd(pathname) #设置FTP当前操作的路径
# ftp.dir() #显示目录下所有目录信息
# ftp.nlst() #获取目录下的文件
# ftp.mkd(pathname) #新建远程目录
# ftp.pwd() #返回当前所在位置
# ftp.rmd(dirname) #删除远程目录
# ftp.delete(filename) #删除远程文件
# ftp.rename(fromname, toname) #将fromname修改名称为toname。
# ftp.storbinary("STOR filename.txt",file_handel,bufsize) #上传目标文件
# ftp.retrbinary("RETR filename.txt",file_handel,bufsize) #下载FTP文件
# ftp.size(filename) #获取文件大小(字节)
# ftp.delete(filename) #删除服务器上的文件

上传和下载文件

import socket
from ftplib import FTP, error_perm def ftpconnect(host, port, username, password):
ftp = FTP()
ftp.set_debuglevel(0)
try:
ftp.connect(host, port)
ftp.login(username, password)
except (socket.error, socket.gaierror):
print("ERROR: cannot connect [{}:{}]" .format(host, port))
return None
except error_perm:
print("ERROR: user Authentication failed")
return None
except:
print("ERROR: Unknow")
return None
return ftp def downloadfile(ftp, remotepath, localpath):
bufsize = 1024
with open(localpath, 'wb') as fp:
ftp.retrbinary('RETR ' + remotepath, fp.write, bufsize) def uploadfile(ftp, remotepath, localpath):
bufsize = 1024
with open(localpath, 'rb') as fp:
ftp.storbinary('STOR ' + remotepath, fp, bufsize) if __name__ == "__main__":
ftp = ftpconnect("192.180.180.100", 21, "admin", "zhongxing")
downloadfile(ftp, "/home/sd/NCP_AGENT", "NCP_AGENT")
ftp.quit()

思考:怎么获取文件传输过程中的进度

由于ftplib中的storbinary和retrbinary接口是阻塞式,返回值表示成功或失败。因此实时获取进度需要创建另外一个任务,如果是下载,实时进度可以使用已下载的文件大小除以总的文件大小;如果是上传,需要另启一个ftp连接,使用size接口获取上传文件的实时大小,然后除以上传文件的总大小即可得到实时进度。上述的方式比较麻烦,但是简单,不用修改源码,另一种方式是修改ftplib的源码,在每一帧的发送过程中做处理,使用全局变量传出即可。

Python中ftplib模块的使用的更多相关文章

  1. Python中optionParser模块的使用方法[转]

    本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值.分享给大家供大家参考之用.具体分析如下: 一般来说,Python中有两个内 ...

  2. python中threading模块详解(一)

    python中threading模块详解(一) 来源 http://blog.chinaunix.net/uid-27571599-id-3484048.html threading提供了一个比thr ...

  3. 【转】关于python中re模块split方法的使用

    注:最近在研究文本处理,需要用到正则切割文本,所以收索到了这篇文章,很有用,谢谢原作者. 原址:http://blog.sciencenet.cn/blog-314114-775285.html 关于 ...

  4. Python中的模块介绍和使用

    在Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一 ...

  5. python中导入模块的本质, 无法导入手写模块的解决办法

    最近身边一些朋友发生在项目当中编写自己模块,导入的时候无法导入的问题. 下面我来分享一下关于python中导入模块的一些基本知识. 1 导入模块时寻找路径 在每一个运行的python程序当中,都维护了 ...

  6. Python中time模块详解

    Python中time模块详解 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. ...

  7. Python中collections模块

    目录 Python中collections模块 Counter defaultdict OrderedDict namedtuple deque ChainMap Python中collections ...

  8. Python中pathlib模块

    Python中pathlib模块 Path.cwd():返回当前目录的路径 Path.home():返回当前用户的家目录 Path.stat():返回此路径信息 Path.touch():创建文件 P ...

  9. Python 中包/模块的 `import` 操作

    版权声明:博客为作者原创,允许转载,但必须注明原文地址: https://www.cnblogs.com/byronxie/p/10745292.html 用实例来说明 import 的作用吧. 创建 ...

随机推荐

  1. 使用JUnit 和Jacoco进行单元测试

    Jacoco配置 <dependency> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven ...

  2. 小师妹学JVM之:JIT中的PrintCompilation

    目录 简介 PrintCompilation 分析PrintCompilation的结果 总结 简介 上篇文章我们讲到了JIT中的LogCompilation,将编译的日志都收集起来,存到日志文件里面 ...

  3. jQuery实现全选、反选、删除

    <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...

  4. python文件处理-将图像根据坐标切割成若干小图

    代码涉及到:遍历目标路径,选取csv后缀的文件,遍历csv每一行,读取坐标,用cv操作图片 # !/usr/bin/python # -*- coding: UTF- -*- import panda ...

  5. 洛谷 P1347 【排序】

    这篇题解没有用拓补排序 (嗐 菜就直说) 个人感觉这道题拓补排序没有变种\(Floyd\)好写吧,思维难度也低一点(亲眼目睹机房dalao这道题拓补排序调了很久). 吐槽结束,开始正题~ 对于这道题为 ...

  6. js修改函数内部的this指向(bind,call,apply)

    js修改函数内部的this指向 在调用函数的时候偶尔在函数内部会使用到this,在使用this的时候发现并不是我们想要指向的对象.可以通过bind,call,apply来修改函数内部的this指向. ...

  7. Validate表单验证插件之常用参数介绍

    Validate常用的一些参数和方法 1.errorElement 修改显示错误提示信息的HTML标签.默认是<label>,可以指定为<span>.... $("# ...

  8. 来看下css边框阴影怎么设置?这些方法掌握后工作更轻松

    我们在网页设计中,通常会使用ps工具来达到图片或者边框阴影.立体等效果.但是如果一些基础效果都需要用p图来完成那就显得效率比较低了.其实可以使用CSS来设置边框阴影,下面本篇文章来给大家介绍一下. 在 ...

  9. css实现自适应正方形的多种方法实现

    方案一:CSS3 vw 单位 CSS3 中新增了一组相对于可视区域百分比的长度单位vw.vh.vmin.vmax.其中vw是相对于视口宽度百分比的单位,1vw = 1% viewport width, ...

  10. 我是如何用 CSS 绘制各种形状的

    自适应的椭圆 1.自适应的椭圆 实现方式是通过border-radius这个属性:border-radius它可以单独指定水平和垂直半径.用 / 分隔这两个值.并且该属性的值不仅可以接受长度值,还能接 ...