#!/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完整实例:
#coding:utf-8 from ctypes import * import os import sys import ftplib class myftp: ftp = ftplib.ftp() bisdir = false path = def __init__(self, host, port='21'): self.ftp.set_debuglevel(2) #打开调试级别2,显示详细信息 #self.ftp.set_pasv(0) #0主动模式 1 #被动模式 self.ftp.connect( host, port ) def login(self, user, passwd ): self.ftp.login( user, passwd ) print self.ftp.welcome def downloadfile( self, localfile, remotefile ): file_handler = open( localfile, 'wb' ) self.ftp.retrbinary( retr %s %( remotefile ), file_handler.write ) file_handler.close() return true def uploadfile( self, localfile, remotefile ): if os.path.isfile( localfile ) == false: return false file_handler = open( localfile, rb ) self.ftp.storbinary( 'stor %s'%remotefile, file_handler, 4096 ) file_handler.close() return true def uploadfiletree( self, localdir, remotedir ): if os.path.isdir( localdir ) == false: return false localnames = os.listdir( localdir ) print remotedir self.ftp.cwd( remotedir ) for local in localnames: src = os.path.join( localdir, local) if os.path.isdir( src ): self.uploadfiletree( src, local ) else: self.uploadfile( src, local ) self.ftp.cwd( .. ) return def downloadfiletree( self, localdir, remotedir ): if os.path.isdir( localdir ) == false: os.makedirs( localdir ) self.ftp.cwd( remotedir ) remotenames = self.ftp.nlst() for file in remotenames: local = os.path.join( localdir, file ) if self.isdir( file ): self.downloadfiletree( local, file ) else: self.downloadfile( local, file ) self.ftp.cwd( .. ) return def show( self, list ): result = list.lower().split( ) if self.path in result and in result: self.bisdir = true def isdir( self, path ): self.bisdir = false self.path = path #this ues callback function ,that will change bisdir value self.ftp.retrlines( 'list', self.show ) return self.bisdir def close( self ): self.ftp.quit() ftp = myftp('********') ftp.login('*****','*****') #ftp.downloadfile('test.txt', 'others\\runtime.log')#ok #ftp.uploadfile('runtime.log', 'others\\runtime.log')#ok #ftp.downloadfiletree('bcd', 'others\\abc')#ok #ftp.uploadfiletree('aaa',others\\ ) ftp.close()print ok!
希望本文所述对大家的python程序设计有所帮助。
