专栏首页python3python的ftp功能程序

python的ftp功能程序

ftp类模块:

#!/usr/bin/python

# -*- coding: utf-8 -*- from ftplib import FTP import sys import datetime import os.path import ConfigParser time=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') class Ftp:   def  __init__ (self,IP,USERNAME,PASSWD,URL,FILENAME):        """初始化ip和端口"""        self.IP=IP        self.USERNAME=USERNAME        self.PASSWD=PASSWD        self.URL=URL        self.FILENAME=FILENAME   def ftp_down(self):        try:             ftp=FTP(self.IP)        except Exception:             print "连接服务器失败"        try:             ftp.login(self.USERNAME,self.PASSWD)        except Exception:             print "登陆服务器失败"        ftp.cwd(self.URL)        ftp.voidcmd("TYPE I")        if  len(ftp.nlst(self.URL+os.sep+self.FILENAME)) != 0:             Datasock,estsize = ftp.ntransfercmd("RETR %s" % self.FILENAME )             Transbytes=0             FO=open(self.FILENAME,'wb')             while True:                 buf=Datasock.recv(2048)                 if not len(buf):                      break                 FO.write(buf)                 Transbytes+=len(buf)                 sys.stdout.write("Received %d" %Transbytes)                 if estsize:                      sys.stdout.write("of %d bytes (%.2f%%)\r\n"  % \                         (estsize,100.0 * float(Transbytes) / float(estsize)))                 else:                     sys.stdout.write("bytes\r")                 sys.stdout.flush()             sys.stdout.write("bytes\r")             FO.close()             Datasock.close()             ftp.voidresp()             ftp.quit()        else:             print "下载文件不存在!--%s" % self.FILENAME   def ftp_up(self):       """上传"""       try:             ftp=FTP(self.IP)       except Exception:             print "连接服务器失败"       try:             ftp.login(self.USERNAME,self.PASSWD)       except Exception:             print "登陆服务器失败"       ftp.cwd(self.URL)       ftp.voidcmd("TYPE I")       if os.path.isfile(self.FILENAME):            FO=open(self.FILENAME,'rb')            Datasock,esize=ftp.ntransfercmd('STOR %s' % self.FILENAME )            esize=os.stat(self.FILENAME)[6]            Transbytes = 0            while True:                   buf = FO.read(2048)                   if not len(buf):                        break                   Datasock.sendall(buf)                   Transbytes+=len(buf)                   sys.stdout.write("send %d of %d bytes (%.1f%%)\r" \                     % ( Transbytes,esize,100 * float(Transbytes) / float(esize)))                   sys.stdout.flush()            Datasock.close()            sys.stdout.write("\n")            FO.close()            ftp.voidresp()            ftp.quit()           else:            print "上传文件不存在!--%s" % self.FILENAME class Config:       def DOWN(self):                  config=ConfigParser.ConfigParser()            config_file=open('config.ini','r')            config.readfp(config_file)            ip=config.get('FTP_APP_DOWN','ip')            user=config.get('FTP_APP_DOWN','user')            password=config.get('FTP_APP_DOWN','password')            url=config.get('FTP_APP_DOWN','url')            filename=config.get('FTP_APP_DOWN','filename')            config_file.close()                        down=Ftp(ip,user,password,url,filename)            down.ftp_down()       def UP(self):            config=ConfigParser.ConfigParser()            config_file=open('config.ini','r')            config.readfp(config_file)            ip=config.get('FTP_APP_UP','ip')            user=config.get('FTP_APP_UP','user')            password=config.get('FTP_APP_UP','password')            url=config.get('FTP_APP_UP','url')            filename=config.get('FTP_APP_UP','filename')            config_file.close()            up=Ftp(ip,user,password,url,filename)            up.ftp_up() if __name__ == '__main__':     sys.stdout=open('ftp.log','a')     print '开始下载:%s' % time     FTP_2=Config()     FTP_2.DOWN()     print '下载结束:%s' % time     print ''     print '开始上传:%s' % time     FTP_2.UP()     print '上传结束:%s' % time     print ''     sys.stdout.close()

读取的配置文件config.ini:

[FTP_APP_DOWN] ip=192.168.10.1 user=RHL password=RHL4321 url=/usr/mpsp/yunxing/RHL filename=ABC.txt [FTP_APP_UP] ip=192.168.10.2 user=RHL password=RHL4321 url=/usr/mpsp/yunxing filename=ABC.txt

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python的多态

    py3study
  • PyQt5 内嵌浏览器注入 Javas

    应同学邀请,演示如何使用 PyQt5 内嵌浏览器浏览网页,并注入 Javascript 脚本实现自动化操作。

    py3study
  • Python与Cisco的事儿之四

       以下代码实现的流程: cdp -->获取相应链接的信息-->自动写进设备相对应的端口--->configure保存-->configure备份到TFTP服...

    py3study
  • 为你的好朋友添点评论

    想要为朋友来点评论就需要知道他的博客域名、appId、appKey和他所使用的机器是哪个地区的。

    Dreamy.TZK
  • 教你如何自定义AlertView

    Dwyane
  • wxPython_02_常用控件--Radio/CheckBox,Choice,Slider,SpinCtrl,Timer

    wxPython各种控件用法官方手册 : http://xoomer.virgilio.it/infinity77/wxPython/widgets.html

    码农帮派
  • 探究ReactiveCocoa 底层KVO封装流程

    原文作者:溪浣双鲤 https://www.jianshu.com/p/51758229b4a5

    iOSSir
  • python实现的摩斯电码解码\编码器

    代码地址如下:http://www.demodashi.com/demo/14743.html

    用户7886150
  • iOS开发之画图板(贝塞尔曲线)

      贝塞尔曲线,听着挺牛气一词,不过下面我们在做画图板的时候就用到贝塞尔绘直线,没用到绘制曲线的功能。如果会点PS的小伙伴会对贝塞尔曲线有更直观的理解。这篇博文...

    lizelu
  • Python 使用 PyQt5 开发的关机小工具分享

    前两天简单认识了一下PyQt5,通过练习开发了一款在Window下自定义关机的小工具,

    砸漏

扫码关注云+社区

领取腾讯云代金券