On 12/25/06, Gabriel Falcão <gabrielteratos <at> gmail.com> wrote:
Pessoal,
preciso de uma ajudinha com ftplib
gostaria de enviar um arquivo via ftp mas gostaria de receber um status
do
envio, para posteriormente mostrar numa barra de progresso em GTK.
se tiver como eu fazer isso com ftplib tá ótimo, se não der e alguém
puder
dar um exemplo usando socket, melhor ainda. Valeu!
eis meu codigo atual:
> #!/usr/bin/python
> # -*- coding: utf-8 -*-
>
> import ftplib
> print "=======\n"
> print "| FTP |\n"
> print "=======\n\n\n"
> usuario=raw_input("Digite a usuario:\n")
> senha=raw_input("Digite a senha:\n")
> conexao = ftplib.FTP('ftp.nacaolivre.org',usuario,senha)
> f = open('logo_nacao.jpg','rb')
> conexao.storbinary('STOR /web/logo_nacao.jpg', f)
> f.close()
> conexao.quit()
Valeu!
Talvez não chegue a ser a melhor idéia nem de perto, mas ...
sobrescrevendo o método storbinary da classe FTP:
<code>
import os
from ftplib import FTP
class myftp(FTP):
debugging = 0
host = ''
port = 21
sock = None
file = None
welcome = None
passiveserver = 1
def __init__(self, host='', user='', passwd='', acct=''):
FTP.__init__(self, host, user, passwd, acct)
def storbinary(self, cmd, fp, size, blocksize=8192):
block = 0
self.voidcmd('TYPE I')
conn = self.transfercmd(cmd)
while 1:
buf = fp.read(blocksize)
if not buf: break
conn.sendall(buf)
block = block + blocksize
print "Porcentagem enviada: ", ((block * 100) / size), '%'
conn.close()
return self.voidresp()
m = myftp()
m.connect('host', 21)
m.login('me', 'myself')
img = open('rocky.jpg', 'r')
size = os.stat('rocky.jpg').st_size
m.storbinary('stor rocky.jpg', img, size=size)
img.close()
m.close()
</code>
Bem marretinha não?
[As partes desta mensagem que não continham texto foram removidas]