python ftp测试

刚学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'

你可能感兴趣的:(python,ftp)