zoukankan      html  css  js  c++  java
  • python模块整理16ftplib模块

    ftplib模块定义了FTP类和一些方法,用以进行客户端的ftp编程,下面为一个客户端下载的例子:
    http://blog.csdn.net/thedjangobook/article/details/6536225
    #!/usr/bin/python
    #-*- coding:utf-8 -*-
    from ftplib import FTP #加载ftp模块
    ftp=FTP() #设置变量
    ftp.set_debuglevel(2) #打开调试级别2,显示详细信息
    ftp.connect("IP","port") #连接的ftp sever和端口
    ftp.login("user","password")#连接的用户名,密码
    print ftp.getwelcome() #打印出欢迎信息
    ftp.cmd("xxx/xxx") #更改远程目录
    bufsize=1024 #设置的缓冲区大小
    filename="filename.txt" #需要下载的文件
    file_handle=open(filename,"wb").write #以写模式在本地打开文件
    ftp.retrbinaly("RETR filename.txt",file_handle,bufsize) #接收服务器上文件并写入本地文件
    ftp.set_debuglevel(0) #关闭调试模式
    ftp.quit #退出ftp

    其他的操作:
    ftp.dir() #显示目录下文件信息
    ftp.mkd(pathname) #新建远程目录
    ftp.pwd() #返回当前所在位置
    ftp.rmd(dirname) #删除远程目录
    ftp.delete(filename) #删除远程文件
    ftp.rename(fromname, toname)#将fromname修改名称为toname。
    ftp.storbinaly("STOR filename.txt",file_handel,bufsize) #上传目标文件

    模式更改:
    ftp.set_pasv(0) 主动模式
    ftp.set_pasv(1) 被动模式

    自己写上传LOG函数
    def putLog(filename,localdir=homedir,remotedir='/',server='1.1.1.1',username='testftp',password='passwd'):
    "Put file to FTP server,use local path"
    "timeout exitcode 99,connect failed exitcode 11,user or passwd error exitcod 22"
    uploadfile='STOR '+filename
    ftp=FTP()
    bufsize=1024
    os.chdir(localdir) #client file dir
    #ftp.set_debuglevel(2)
    if server and username and password:
    try:
    ftp.connect(server)
    except socket.error:
    #wait(900)
    #waittime+=900
    #if waittime==3600:
    wait(15)
    waittime+=15
    if waittime==150:
    #print "Put gmtlog timeout,exit!"
    print printtime('%Y-%m-%d %H:%M:%S'),"Error: Put gmtlog %s to FTP(%s) timeout,exit!" % (filename,server)
    sys.exit(99)
    #print "Retry put %s again after 900s" % filename
    print printtime('%Y-%m-%d %H:%M:%S'),"Notice: Retry Put %s to FTP(%s) again after 900s" % (filename,server)
    putLog(filename)
    #sys.exit(1)
    except ftplib.error_perm,e:
    print printtime('%Y-%m-%d %H:%M:%S'),"Error: Connect to FTP(%s) failed,exit!" % server
    print "Connect failed: %s" % e
    sys.exit(11)
    else:
    try:
    ftp.login(username,password)
    except ftplib.error_perm,e:
    print printtime('%Y-%m-%d %H:%M:%S'),"Error: %s Login FTP(%s) failed,exit!" % (username,server)
    print "Login failed: %s" % e
    sys.exit(22)
    else:
    #print ftp.getwelcome()
    try:
    try:
    ftp.mkd(remotedir)
    except ftplib.error_perm,e:
    #print "Failed: %s" % e
    pass
    ftp.cwd(remotedir)
    file_handler = open(filename,'rb')
    #ftp.storbinary('STOR test.log',file_handler,bufsize)
    ftp.storbinary(uploadfile,file_handler,bufsize)
    except ftplib.error_perm,e:
    print printtime('%Y-%m-%d %H:%M:%S'),"Error: Put %s to FTP(%s) failed,exit!" % (filename,server)
    print "Put failed: %s" % e
    else:
    #ftp.set_debuglevel(0)
    print printtime('%Y-%m-%d %H:%M:%S'),"Notice: FTPuser(%s) Put %s to FTP(%s) successful" % (username,filename,server)
    os.rename(filename,filename+'.bak')
    return True
    finally:
    ftp.close()
    else:
    print "%s or %s or %s is not exist" % (server,username,password)

    网上找的一个下载文件的示例
    #!/usr/bin/env python
    from ftplib import FTP

    ftp=FTP()
    ftp.set_debuglevel(2) #打开调试级别2,显示详细信息
    ftp.connect('ftp_server','port') #连接
    ftp.login('username','password') #登录,如果匿名登录则用空串代替即可
    print ftp.getwelcome() #显示ftp服务器欢迎信息
    ftp.cwd('xxx/xxx/') #选择操作目录
    bufsize = 1024 #设置缓冲块大小
    filename='dog.jpg'
    file_handler = open(filename,'wb').write #以写模式在本地打开文件
    ftp.retrbinary('RETR dog.jpg',file_handler,bufsize) #接收服务器上文件并写入本地文件
    ftp.set_debuglevel(0) #关闭调试
    ftp.quit() #退出ftp服务器

  • 相关阅读:
    Incorrect integer value: '' for column 'id' at row 1 错误解决办法
    DT6.0关于SQL注入漏洞修复问题
    DT6.0框架留言模块漏洞修复
    Centos7 Rsync怎么实现热备份笔记
    撰写一篇博客要求讲述四则运算2的设计思想,源程序代码、运行结果截图、编程总结分析,并按照PSP0级的要求记录开发过程中的时间记录日志。
    软件工程概论——课程导入界面以及数据导入数据库
    软件工程概论 第一课:课后作业1
    完成课件中的动手动脑的或需要验证的相关内容。 (截止时间2017-11-16晚23:00)
    完成课件中的动手动脑的或需要验证的相关内容。
    课后作业:动手动脑之String.equals()方法、整理String类的Length()、charAt()、 getChars()、replace()、 toUpperCase()、 toLowerCase()、trim()、toCharArray()使用说明、阅读笔记发表到博客园。
  • 原文地址:https://www.cnblogs.com/diege/p/2755102.html
Copyright © 2011-2022 走看看