python ftp测试

发布时间:2019-08-08 07:44:18编辑:auto阅读(1607)

    刚学Python,做的ftp测试

    1,简单ftp

    vim test.py

    #!/usr/bin/env python
    import time
    from ftplib import FTP
    local_dir_update="*****"
    local_dir_download="*******"
    remote_host="*.*.*.*"
    port="21"
    remote_user="name"
    remote_passwd="password"
    ftp=FTP()
    ftp.set_debuglevel(2)
    ftp.connect(remote_host,port)
    ftp.login(remote_user,remote_passwd)
    print ftp.getwelcome()
    #ftp.cwd()
    bufsize = 1024
    filename='ha.txt'
    file_handler = open(filename,'rb')
    ftp.storbinary('STOR ha.txt',file_handler,bufsize)
    ftp.set_debuglevel(0)
    file_handler.close()
    ftp.quit()

    2.稍复杂点

    vim myftp.py

    #!/usr/bin/env python
    import time,socket
    from ftplib import FTP
    class MyFtp:
            def __init__(self,hostaddr,username,password,remotedir='./',port=21):
                    self.hostaddr=hostaddr
                    self.username = username 
                    self.password = password 
                    self.remotedir  = remotedir 
                    self.port     = port 
                    self.ftp      = FTP() 
                    self.file_list = []
            def __del__(self):
                    self.ftp.quit()
            def login(self):
                    ftp = self.ftp
                    try:
                            timeout = 60
                            socket.setdefaulttimeout(timeout) 
                            ftp.set_pasv(True
                            print 'connecting %s...' %(self.hostaddr)
                            ftp.connect(self.hostaddr, self.port) 
                            ftp.login(self.username, self.password) 
                            print 'login is ok'
                    except Exception,e: 
                            print str(e)
                    try: 
                            ftp.cwd(self.remotedir
                    except(Exception): 
                            print 'change dir is failed..'
            def put_files(self,filename):
                    ftp = self.ftp
                    self.filename=filename
                    command='STOR '+self.filename
                    file_handler = open(self.filename,'rb')
                    bufsize=1024
                    ftp.storbinary(command,file_handler,bufsize)
                    print 'upload is ok'
                    file_handler.close()
            def download_files(self,filename):
                    ftp = self.ftp
                    self.filename = filename
                    command='RETR '+self.filename
                    bufsize=1024
                    ftp.retrbinary(command,open(self.filename,'wb').write,bufsize)
    if __name__ == '__main__':
            remote_host="*******"
            remote_user="name"
            remote_passwd="*******"
            remotedir='./'
            port='21'
            filename='ha.txt'
            f = MyFtp(remote_host,remote_user,remote_passwd,remotedir,port)
            f.login()
    #       f.put_files(filename)
    #       f.download_files(filename)
            a=['ha.txt','ha1.txt','ha2.txt']
            for a1 in a:
                    f.download_files(a1)
            print 'download is ok'

    3.与上面配合写的一个,在一个特定目录下的文件执行脚本到服务器上取.zip文件。(工作中用到,才写)

    vim download.py

    #!/usr/bin/env python
    import os,time
    from  myftp import MyFtp
    file_list=['xxxxxx','xxxxxx,'xxxxxx','xxxxxx','xxxxxx']
    local_dir_update="/xxxxxx"
    local_dir_download="/xxxxxx"
    a=time.localtime(time.time()+24*60*60)
    dt=time.strftime('%Y%m%d',a)
    if os.path.exists(local_dir_download+os.sep+dt):
            print "ok"
    else:
            os.mkdir(local_dir_download+os.sep+dt)

    if __name__ == '__main__':
            remote_host="xxxxxx"
            remote_user="cxxxxxx"
            remote_passwd="xxxxxx"
            remotedir=dt
            port='21'
            filename='ha.txt'
            f = MyFtp(remote_host,remote_user,remote_passwd,remotedir,port)
            f.login()
    #       f.put_files(filename)
    #       f.download_files(filename)
            a=os.listdir(local_dir_update)
            os.chdir(local_dir_download+os.sep+dt)
            for a1 in a:
                    if a1 in file_list:
                            f.download_files(a1+".zip")
            print 'download is ok'

关键字