Pergunta

Eu escrevi algum código python para baixar uma imagem usando

urllib.urlopen().read()

e, em seguida, enviá-lo para um site FTP usando

ftplib.FTP().storbinary()

mas eu estou tendo um problema. Às vezes, o arquivo de imagem é apenas parcialmente carregado, então eu obter imagens com o fundo 20% ou assim cortada. Eu verifiquei a versão baixada localmente e eu ter baixado com sucesso a imagem inteira, o que me leva a acreditar que é um problema com storbinary. Eu acredito que eu estou abrindo e fechando todos os arquivos corretamente. Alguém tem alguma pista a respeito de porque eu estou recebendo um carregamento parcial com storbinary?

Update: Quando eu corro através dos comandos no shell Python, o carregamento for concluído com êxito, eu não sei por que seria diferente de quando executado como um script ...

Foi útil?

Solução 2

Tem sido um tempo desde que eu olhei para este código, mas eu me lembro o ponto crucial era que eu não estava fechando o arquivo baixado corretamente. Eu tenho o código de trabalho, porém, assim apenas no caso de um problema com o carregamento e não o download, aqui estão dois trechos:

Aqui está o código de trabalho para baixar a imagem:

socket = urllib.urlopen(TheURL)
FileContents = socket.read()
LocalFilename = LocalDir + FilenameOnly
LocalFile = open(LocalDir + FilenameOnly, 'wb')
LocalFile.write(FileContents)
LocalFile.close()

Onde TheURL é a URL do arquivo que estou tentando download, FilenameOnly é apenas a parte do nome do caminho, e LocalDir é o destino local. Eu acredito que o meu problema era que eu não estava chamando LocalFile.close().

Aqui está o código de trabalho para carregar a imagem:

FTPServer = ftplib.FTP(FTPServer, FTPUsername, FTPPassword)
UploadFile = open(Filename, "rb")
FTPServer.cwd(FTPSubDirectory)

UploadFile.close()
FTPServer.quit()

O problema também poderia ter sido a de que eu não estava chamando FTPServer.quit()

Se alguém tiver alguma dúvida sobre este código, eu vou alegremente responder nos comentários; Eu me sinto muito ruim que eu deixei qualquer enforcamento Googlers!

Outras dicas

Acontece que eu não estava fechando o arquivo baixado corretamente. Vamos todos fingir que isso nunca aconteceu.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top