FTP

Matt Singer mrsinger at usa.net
Wed Apr 16 10:57:53 EDT 2003


Helps quite a bit... Thanks!


Nicodemus <nicodemus at globalite.com.br> wrote in message news:<mailman.1050460645.26676.python-list at python.org>...
> Matt Singer wrote:
> 
> >I have an application with a PYQT interface that uploads large files. 
> >Is there an async method to get how much data has been sent with
> >storlines to update a progress bar?  Or is there an alternate ftp
> >interface?
> >
> 
>  From the Python docs:
> 
> storlines(command, file)
>     Store a file in ASCII transfer mode. command should be an 
> appropriate "STOR" command (see storbinary()). Lines are read until EOF 
> from the open file object file using its readline() method to provide 
> the data to be stored.
> 
> So you can send any object with a readline method that support the same 
> semantics of a file (untested code):
> 
> 
> class ProgressFileReader:
>     
>      def __init__(self, filename, callback):
>          self.file = file(filename, 'r')
>          self.file_size = os.path.getsize(filename)
>          self.callback = callback # will be called with one parameter:
>                                   # the percentage of the file read so far
> 
>      def readline(self, *args):
>          result = self.file.readline(*args)
>          percent = self.file.tell()*100/self.file_size
>          self.callback(percent)
>          return result
> 
> And use it as follows:
> 
>     f = ProgressFileReader('myfile', mycallback)
>     ftpobj.storlines('STOR myfile', f)
>      
>  
> Another option would be to subclass the file object.
> 
> Hope that helps,
> Nicodemus.




More information about the Python-list mailing list