Parcial upload com storbinary em python
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 ...
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.