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 介绍了在开发过程中如何更方便轻松地记录日志的流程. 整个演讲的内容包括: 为什么日志记录非常重要 日志记录的流程是怎样的 怎样来进行日志记录 ...
随机推荐
- 阿里云Centos等更新源设置成阿里源方法。
https://help.aliyun.com/knowledge_detail/5974184.html ---------------------------------------------- ...
- LeetCode解题报告—— Container With Most Water & 3Sum Closest & Letter Combinations of a Phone Number
1. Container With Most Water Given n non-negative integers a1, a2, ..., an, where each represents a ...
- EF框架的优点是什么?
在.Net Framework SP1微软包含一个实体框架(Entity Framework),此框架可以理解成微软的一个ORM产品.用于支持开发人员通过对概念性应用程序模型编程(而不是直接对关系存储 ...
- android studio 入门比较好的书籍
http://blog.csdn.NET/aqi00/article/details/50012511 http://blog.csdn.net/aqi00/article/details/73065 ...
- OpenStack 存储服务 Cinder介绍和控制节点部署 (十三)
Cinder介绍 OpenStack块存储服务(cinder)为虚拟机添加持久的存储,块存储提供一个基础设施为了管理卷,以及和OpenStack计算服务交互,为实例提供卷.此服务也会激活管理卷的快照和 ...
- 第4天:Ansible模块
Ansible对远程服务器的实际操作实际是通过模块完成的,其工作原理如下: 1)将模块拷贝到远程服务器 2)执行模块定义的操做,完成对服务器的修改 3)在远程服务器中删除模块 需要说明的是,Ansib ...
- 线程间操作无效: 从不是创建控件“textBox2”的线程访问它
如何:对 Windows 窗体控件进行线程安全调用 线程间操作无效: 从不是创建控件的线程访问它的三种方法 如果使用多线程处理来提高 Windows 窗体应用程序的性能,则你必须确保以线程安全的方式调 ...
- D - Matrix Multiplication ZOJ - 2316 规律题
Let us consider undirected graph G = which has N vertices and M edges. Incidence matrix of this grap ...
- Mac下配置PHP支持GD库FreeType
一句话脚本 curl -s http://php-osx.liip.ch/install.sh | bash -s 5.6 记得要FQ哦. 或者下面代码保存成.sh ,代码从http://php-os ...
- eclipse汉化 adt汉化
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha