python的FTP模块
python本身自带一个FTP模块,可以轻松实现FTP的上传,下载等操作。下面来看看用法:
from ftplib import FTPimport socket #用来设置超时时间FTP.connect(服务器地址,端口,超时时间) # 连接服务器FTP.login(用户名,用户密码) # 用户登录FTP.pwd(路径) # 读取操作路径FTP.cwd(路径) # 设置要操作FTP文件夹路径FTP.nlst() # 获得目录下文件FTP.retrbinary(文件名, 回调函数) # 下载FTP上的文件FTP.delete(文件名) # 删除FTP文件FTP.storbinary(文件名, 文件对象 [,块大小]) # 上传FTP文件FTP.quit() # 退出FTP服务器FTP.set_pasv(boolean) # 是否设置为被动模式FTP.rename(old, new) # 重命名FTP.delete(path) # 删除文件FTP.mkd(directory) # 创建目录 |
一个上传代码:
import socketfrom ftplib import FTPftp_server='xx.xx.xx.xx'ftp_user='xxxxx'ftp_password='xxxxx'ftp_backup_dir='backup'newday = date.today() #获取今天的日期oldday = date.today()-timedelta(5) #获得5天前的日期newfile = '/home/backup/' + 'backup_data_' + str(newday.year) + '.' + str(newday.month) + '.' + str(newday.day) + '.zip' #本次备份文件名(绝对路径)oldfile = '/home/backup/' + 'backup_data_' + str(oldday.year) + '.' + str(oldday.month) + '.' + str(oldday.day) + '.zip' #5天前备份的文件名(绝对路径)def upload(): socket.setdefaulttimeout(60) #超时FTP时间设置为60秒 ftp = FTP(ftp_server) print("login ftp...") try: ftp.login(ftp_user, ftp_password) print(ftp.getwelcome()) #获得欢迎信息 try: if ftp_backup_dir in ftp.nlst(): print("found backup folder in ftp server, upload processing.") else: print("don't found backup folder in ftp server, try to build it.") ftp.mkd(ftp_backup_dir) except: print("the folder" + ftp_backup_dir + "doesn't exits and can't be create!") sys.exit() except: print("ftp login failed.exit.") sys.exit() ftp.cwd(ftp_backup_dir) #设置FTP路径 print("upload data...") try: ftp.storbinary('STOR ' + os.path.basename(newfile), open(newfile,'rb'), 1024) #上传备份文件 except: print("upload failed. check your permission.") print("delte old file...") try: ftp.delete(os.path.basename(oldfile)) #删除5天前的备份文件 except: print("the old file in ftp doesn't exists, jumped.") print("ftp upload successful.exit...") ftp.quit()if __name__== '__main__': upload() |
示例2:
ftpserver = "192.168.0.1"
# 建立FTP连接
ftp = ftplib.FTP(ftpserver)
# FTP用户验证
ftp.login('administrator', 'sunfast')
# 切换ftp操作目录
ftp.cwd("/fromcovisint/094200005560743089CHN03_830")
for filename in ftp.nlst(): # 获取ftp操作目录的所有文件
if os.path.splitext(filename)[1].upper() == '.CSV':
if 'FINISHED' in filename:
continue
else:
try:
#下载指定文件到当前操作目录中
ftp.retrbinary('RETR %s' % filename, open(filename, 'wb').write)
#ftp.storbinary('STOR %s'% filename, open(filename, 'rb'), CONST_BUFFER_SIZE) FTP上传文件
# 导入数据
self.import_data(os.path.join(os.getcwd(), filename))
new_filename = os.path.splitext(filename)[0] + "_FINISHED" + os.path.splitext(filename)[1]
# 修改FTP目录上的文件名称,使用新的文件名称
ftp.rename(filename, new_filename)
finally:
# 删除当前目录中下载的文件明细
os.remove(os.path.join(os.getcwd(), filename))
ftp.quit()
参考文档:
http://doublewei369.blog.163.com/blog/static/342947812012923113356945/
http://blog.csdn.net/wklken/article/details/7059423
http://wangwei007.blog.51cto.com/68019/983638
python的FTP模块的更多相关文章
- python安装、模块安装
python安装 windows 下载安装包 https://www.python.org/downloads 改环境变量 [右键计算机]-->[属性]-->[高级系统设置]-->[ ...
- 使用python操作FTP上传和下载
函数释义 Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件,函数列举如下 ftp登陆连接 from ftplib import F ...
- Linux升级Python提示Tkinter模块找不到解决
一.安装tkinter 在Linux中python默认是不安装Tkinter模块, [root@li250- ~]# python Python (r266:, Feb , ::) [GCC (Red ...
- Python之FTP多线程下载文件之多线程分块下载文件
Python之FTP多线程下载文件之多线程分块下载文件 Python中的ftplib模块用于对FTP的相关操作,常见的如下载,上传等.使用python从FTP下载较大的文件时,往往比较耗时,如何提高从 ...
- python之mysqldb模块安装
之所以会写下这篇日志,是因为安装的过程有点虐心.目前这篇文章是针对windows操作系统上的mysqldb的安装.安装python的mysqldb模块,首先当然是找一些官方的网站去下载:https:/ ...
- 【python】FTP客户端
Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件,函数列举如下 ftp登陆连接 from ftplib import FTP #加 ...
- Python实现FTP服务功能
本文从以下三个方面, 阐述Python如何搭建FTP服务器 一. Python搭建FTP服务器 二. FTP函数释义 三. 查看目录结构 四. 上传下载程序 一. Python搭建FTP服务器 1. ...
- python的ftplib模块
Python中的ftplib模块 Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件 FTP的工作流程及基本操作可参考协议RFC95 ...
- Python中logging模块的基本用法
在 PyCon 2018 上,Mario Corchero 介绍了在开发过程中如何更方便轻松地记录日志的流程. 整个演讲的内容包括: 为什么日志记录非常重要 日志记录的流程是怎样的 怎样来进行日志记录 ...
随机推荐
- connect-falsh的用法
借鉴博客 http://yunkus.com/connect-flash-usage/
- mysql 库操作、存储引擎、表操作
阅读目录 库操作 存储引擎 什么是存储引擎 mysql支持的存储引擎 如何使用存储引擎 表操作 创建表 查看表结构 修改表ALTER TABLE 复制表 删除表 数据类型 表完整性约束 回到顶部 一. ...
- Edit Distance——经典的动态规划问题
题目描述Edit DistanceGiven two words word1 and word2, find the minimum number of steps required to conve ...
- python 实用命令
列表理解: list = [-1, -2, 1, 2] [item for item in list if item > 0] [1, 2] d = {'person': 2, 'cat': 4 ...
- 【转载】JAVA多线程和并发基础面试问答
转载自这里. 多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一.在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题.(校对注: ...
- 前端读者 | 由setTimeout引发的JS引擎运行机制的研究
本文来自 @xiaoyuze88 链接:http://xiaoyuze88.github.io/ 太久没碰代码了,那天想到关于循环调用setTimeout实现每隔一秒输出递增的数的那个问题,搞了搞,发 ...
- jquery扩展插件,让demo元素也可以resize
(function($, h, c) { var a = $([]), e = $.resize = $.extend($.resize, {}), i, k = "setTimeout&q ...
- Genymotion的2个问题及解决方法
问题一:Unable to connect to your virtual device 解决方法:基本都是内存不够导致的,在virtualbox中调整对应虚拟机的内存,确保任务管理器中的性能一项中剩 ...
- catalina.out日志切割
安装cronlog rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm yum ins ...
- 在浏览器中输入url地址 -> 显示主页的过程
-来自<图解HTTP> 最近在进行前端面试方面的一些准备,看了网上许多相关的文章,发现有一个问题始终绕不开: 在浏览器中输入URL到整个页面显示在用户面前时这个过程中到底发生了什么.仔细思 ...