Ioscas, I don't know much about FTP, but your code doesn't look much like the example (http://twistedmatrix.com/projects/core/documentation/examples/) .
This page wasn't hard for me to find. I used "ftp twisted example" in search.yahoo.com. -George On Wed, 2009-02-11 at 11:43 +0800, 柳锴 wrote: > hello, everyone: > > I'm new to twisted and ftp protocol. for some purpose, i need a > python ftp client to do list, get, put, remove operations upon a FTP > server which is implemented with twisted. > here is my codes, testing for 'get' passed, but 'put' failed. i > checked the api of storeFile, abd got these: > > ''' > def storeFile(self, path, offset=0): (source) > > Store a file at the given path. > This method issues the 'STOR' FTP command. > Returns > A tuple of two Deferreds: > * Deferred > IFinishableConsumer. You > must call the finish method > on the IFinishableConsumer > when the file is completely > transferred. > * Deferred list of > control-connection > responses. > ''' > but i don't know how to handle it, :) > sorry for the rubbish codes, but i really need help from you guys, > it's hard to find some useful info from twisted official doc, > Any suggestion on how to write a nice ftp client with twisted is > welcome. > Thanks in advance. > > IOSCAS > > ______________________________________________________________________________ > > from twisted.protocols.ftp import FTPClient, FTPFileListProtocol > from twisted.internet.protocol import Protocol, ClientCreator > from twisted.python import usage > from twisted.internet import reactor, defer > > class SaveFile(Protocol): > ''' > save the ftp file to local filesystem > ''' > def __init__(self, output): > self.fout = open(output, 'w') > > def dataReceived(self, data): > self.fout.write(data) > self.fout.close() > > class FTP: > ''' > a simple ftp client > ''' > def __init__(self, host, port): > ''' > init > ''' > self.__host = host > self.__port = port > self.__username = 'aaa' > self.__passwd = 'bbb' > self.__passive = 1 > > def __get(self, ftp_client, src, des): > ''' > ''' > save_file = SaveFile(des) > d = ftp_client.retrieveFile(src, save_file) > d = ftp_client.quit() > d.addCallback(lambda result: reactor.stop()) > return d > > def get(self, src, des): > ''' > get src file from ftp server, store it in des > ''' > creator = ClientCreator(reactor, FTPClient, self.__username, > self.__passwd, self.__passive) > defer = creator.connectTCP(self.__host, > self.__port).addCallback(self.__get, src, des) > reactor.run() > return defer.result > > def __put(self, ftp_client, src, des): > ''' > ''' > source_file = os.path.basename(src) > target_dir = os.path.dirname(des) > ftp_client.changeDirectory(target_dir) > d = ftp_client.storeFile(src) > d = ftp_client.quit() > d.addCallback(lambda result: reactor.stop()) > return d > > def put(self, src, des): > ''' > put src file to ftp server, store it in des > ''' > creator = ClientCreator(reactor, FTPClient, self.__username, > self.__passwd, self.__passive) > defer = creator.connectTCP(self.__host, > self.__port).addCallback(self.__put, src, des) > reactor.run() > return defer.result > > > > _______________________________________________ > Twisted-Python mailing list > [email protected] > http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python -- George Pauly Ring Development www.ringdevelopment.com _______________________________________________ Twisted-Python mailing list [email protected] http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
