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