Python中ftplib模块的使用
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模块的使用的更多相关文章
- Python中optionParser模块的使用方法[转]
本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值.分享给大家供大家参考之用.具体分析如下: 一般来说,Python中有两个内 ...
- python中threading模块详解(一)
python中threading模块详解(一) 来源 http://blog.chinaunix.net/uid-27571599-id-3484048.html threading提供了一个比thr ...
- 【转】关于python中re模块split方法的使用
注:最近在研究文本处理,需要用到正则切割文本,所以收索到了这篇文章,很有用,谢谢原作者. 原址:http://blog.sciencenet.cn/blog-314114-775285.html 关于 ...
- Python中的模块介绍和使用
在Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一 ...
- python中导入模块的本质, 无法导入手写模块的解决办法
最近身边一些朋友发生在项目当中编写自己模块,导入的时候无法导入的问题. 下面我来分享一下关于python中导入模块的一些基本知识. 1 导入模块时寻找路径 在每一个运行的python程序当中,都维护了 ...
- Python中time模块详解
Python中time模块详解 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. ...
- Python中collections模块
目录 Python中collections模块 Counter defaultdict OrderedDict namedtuple deque ChainMap Python中collections ...
- Python中pathlib模块
Python中pathlib模块 Path.cwd():返回当前目录的路径 Path.home():返回当前用户的家目录 Path.stat():返回此路径信息 Path.touch():创建文件 P ...
- Python 中包/模块的 `import` 操作
版权声明:博客为作者原创,允许转载,但必须注明原文地址: https://www.cnblogs.com/byronxie/p/10745292.html 用实例来说明 import 的作用吧. 创建 ...
随机推荐
- Spring Boot 系列
https://www.cnblogs.com/magicalSam/p/7189421.html
- [ C++ ] 勿在浮沙筑高台 —— 内存管理(9~16p)primitives(下)
per-class allocator 2 tips: operator new重载 不会被派生类实际使用,因为父类大小内存的分配交给子类去调用明显是不正确的.实际上会被转交至 : : operato ...
- skywalking7 源码解析 (3) :agent启动服务分析以及性能影响
skywalking必看的文章,转载自https://blog.csdn.net/u010928589/article/details/106608864/
- 手摸手带你理解Vue的Watch原理
前言 watch 是由用户定义的数据监听,当监听的属性发生改变就会触发回调,这项配置在业务中是很常用.在面试时,也是必问知识点,一般会用作和 computed 进行比较. 那么本文就来带大家从源码理解 ...
- C# 从1到Core--委托与事件
委托与事件在C#1.0的时候就有了,随着C#版本的不断更新,有些写法和功能也在不断改变.本文温故一下这些改变,以及在NET Core中关于事件的一点改变. 一.C#1.0 从委托开始 1. 基本方式 ...
- jQuery制作div板块拖动层排序
html结构: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...
- 高速缓存一致性协议MESI与内存屏障
一.CPU高速缓存简单介绍 CPU高速缓存机制的引入,主要是为了解决CPU越来越快的运行速度与相对较慢的主存访问速度的矛盾.CPU中的寄存器数量有限,在执行内存寻址指令时,经常需要从内存中读取指令所需 ...
- java语言基础(三)_数组
数组 是引用类型 1. 容器:是将多个数据存储到一起,每个数据称为该容器的元素. 2. 数组概念:数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致. 特点: 数组是一种引用数据类型 数组当 ...
- CSS/CSS3常用的样式兼容,样式总结
这篇文章这篇文章主要介绍了css中常用但是又难记的样式作为总结,方便大家学习和使用.包括了‘单行缩略号‘.’css圆角兼容'.‘元素阴影’,‘border取消宽度影响’,‘css3的背景渐变’,‘cs ...
- Navicat远程连接MySQL 提示1045 - Access denied for user 'root'@'223.74.158.192'(using password:YES)
问题: 今天在自己的阿里云服务器上(Window Server2012 R2)安装了一个MySQL5.7.26,在阿里云服务器中通过本地链接是正常的,但是当在自己的电脑上使用Navicat连接是提示: ...