python本身自带一个FTP模块,可以轻松实现FTP的上传,下载等操作。下面来看看用法:

from ftplib import FTP
import 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 socket
from ftplib import FTP
ftp_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模块的更多相关文章

  1. python安装、模块安装

    python安装 windows 下载安装包 https://www.python.org/downloads 改环境变量 [右键计算机]-->[属性]-->[高级系统设置]-->[ ...

  2. 使用python操作FTP上传和下载

    函数释义 Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件,函数列举如下 ftp登陆连接 from ftplib import F ...

  3. Linux升级Python提示Tkinter模块找不到解决

    一.安装tkinter 在Linux中python默认是不安装Tkinter模块, [root@li250- ~]# python Python (r266:, Feb , ::) [GCC (Red ...

  4. Python之FTP多线程下载文件之多线程分块下载文件

    Python之FTP多线程下载文件之多线程分块下载文件 Python中的ftplib模块用于对FTP的相关操作,常见的如下载,上传等.使用python从FTP下载较大的文件时,往往比较耗时,如何提高从 ...

  5. python之mysqldb模块安装

    之所以会写下这篇日志,是因为安装的过程有点虐心.目前这篇文章是针对windows操作系统上的mysqldb的安装.安装python的mysqldb模块,首先当然是找一些官方的网站去下载:https:/ ...

  6. 【python】FTP客户端

    Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件,函数列举如下 ftp登陆连接 from ftplib import FTP #加 ...

  7. Python实现FTP服务功能

    本文从以下三个方面, 阐述Python如何搭建FTP服务器 一. Python搭建FTP服务器 二. FTP函数释义 三. 查看目录结构 四. 上传下载程序 一. Python搭建FTP服务器 1. ...

  8. python的ftplib模块

    Python中的ftplib模块 Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件 FTP的工作流程及基本操作可参考协议RFC95 ...

  9. Python中logging模块的基本用法

    在 PyCon 2018 上,Mario Corchero 介绍了在开发过程中如何更方便轻松地记录日志的流程. 整个演讲的内容包括: 为什么日志记录非常重要 日志记录的流程是怎样的 怎样来进行日志记录 ...

随机推荐

  1. find命令的基本用法

     linux 中find 常用示例解析 find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path…] [expression] 其实[-H] [-L] [- ...

  2. HUD-5379

    Mahjong tree Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  3. hdu 3081(二分+并查集+最大流||二分图匹配)

    Marriage Match II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  4. 简单的WSGI server

    参考:https://ruslanspivak.com/lsbaws-part1/ 简单的WSGI server server程序 webserver.py # Tested with Python ...

  5. centos 新增用户, 然后他在主目录添加网站403Forbbiden

    是 /home/zhou  这个文件夹的权限不够 往往看了网站目录并且给了777权限了,还是403,就是因为父目录的权限不够

  6. sublime插件总汇

    本人用过多个编辑器(非IDE),发现sublime的样式非常帮,现在做个插件总汇 ChineseLocalzations      中文插件 Emmet                         ...

  7. Linux操作命令(五)

    find . -name ”*.c" -exec ./command.sh {} \; 本次实验将介绍 Linux 命令中 find 和 xargs 命令的用法. find xargs 1. ...

  8. 字符串hash-RK算法讲解二

    算法分析:预处理时间Θ(m),即求h,p,t的时间为,匹配时间在最坏情况下为Θ((n-m-1)m),因为可能出现每次都是可能命中点的情况.如T=a^n,P=a^m,此种情况下验证时间为Θ((n-m-1 ...

  9. HDU 4891 The Great Pan

    模拟题. #include<map> #include<set> #include<ctime> #include<cmath> #include< ...

  10. ZOJ 3497 Mistwald

    矩阵快速幂. 邻接矩阵的$P$次方就是走$P$步之后的方案数,这里只记录能否走到就可以了.然后再判断一下三种情况即可. #pragma comment(linker, "/STACK:102 ...