FTP status problems. (Again)
marduk
marduk+news at letterboxes.org
Sat Sep 17 00:42:28 EDT 2005
On Fri, 2005-09-16 at 19:27 -0700, Nainto wrote:
> Hello, I have posted before about trying to find the status of an FTP
> uplaod but couldn't get anything to work. After some more searching I
> found
> http://groups.google.com/group/comp.lang.python/browse_thread/thread/76be9a994547db4/91917c906cdc04d4?q=ftp+progress&rnum=1#91917c906cdc04d4
> but it does not seem to work because it just uploads the file and does
> not print a . onto the screen. HEre is the code I have when I'm using
> the code from that link.
> import ftplib
> import os
> class dot_FTP(ftplib.FTP):
> def storbinary(self, cmd, fp, blocksize=8192):
> self.voidcmd('TYPE I')
> conn = self.transfercmd(cmd)
> while 1:
> buf = fp.read(blocksize)
> if not buf: break
> conn.send(buf)
> sys.stdout.write('.')
> sys.stdout.flush()
> conn.close()
> return self.voidresp()
>
>
> ftp = ftplib.FTP("FTPADDRESS")
> ftp.login("user","pass")
> file = "/file"
> ftp.storbinary("STOR " + file, open(file, "rb"), 1024)
> ftp.quit()
> Does anyone know why this is not working? IS there any other way to
> find out when a chunc has been sent or the bytes uploaded of a file?
> Thanks.
>
... and I haven't tried this myself, but you should be able to subclass
the builtin file object and prepare your own read() method. Something
like
class ProgressFile(file):
def read(self, size = None):
print '.',
if size is not None:
return file.read(self, size)
else:
return file.read()
May need some tweaking.. then store the file as
ftp.storbinary("STOR " + file, ProgressFile(file, "rb"), 1024)
Give it a try..
-m
More information about the Python-list
mailing list