Gmane
From: Alexandre Gans <python.storm <at> gmail.com>
Subject: Re: Ajuda com ftplib
Newsgroups: gmane.comp.python.brasil
Date: 2006-12-27 13:27:06 GMT (1 year, 47 weeks, 1 day, 4 hours and 59 minutes ago)

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]

__._,_.___
========================================================
Antes de enviar sua mensagem dê uma lida em:
http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar
========================================================
Atividade nos últimos dias
Visite seu Grupo
Barra de Ferramentas

Instale grátis!

Os produtos Yahoo!

no seu navegador.

Yahoo! Mail

Cadastre-se já!

Proteção anti-spam

Muito mais espaço

Yahoo! Fotos

Compartilhe suas fotos

Carregamento fácil

Armazenamento ilimitado

.

__,_._,___