Частичная загрузка со storbinary в python - PullRequest
1 голос
/ 22 марта 2009

Я написал код на Python для загрузки изображения, используя

urllib.urlopen().read()

и затем загрузите его на FTP-сайт, используя

ftplib.FTP().storbinary()

но у меня проблема. Иногда файл изображения загружается только частично, поэтому я получаю изображения с отсечением 20% или около того. Я проверил локально загруженную версию и успешно загрузил весь образ, что наводит меня на мысль, что это проблема с storbinary. Я считаю, что я правильно открываю и закрываю все файлы. Кто-нибудь знает, почему я получаю частичную загрузку с помощью storbinary?

Обновление: Когда я запускаю команды в оболочке Python, загрузка завершается успешно, я не знаю, почему она будет отличаться от сценария ...

Ответы [ 2 ]

0 голосов
/ 04 января 2011

Прошло много времени с тех пор, как я посмотрел этот код, но я помню, суть его заключалась в том, что я не закрывал загруженный файл правильно. Хотя у меня есть рабочий код, так что на всякий случай это была проблема с загрузкой, а не загрузкой, вот оба фрагмента:

Вот рабочий код для загрузки изображения:

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

Где TheURL - это URL-адрес файла, который я пытаюсь загрузить, FilenameOnly - это просто часть пути к файлу, а LocalDir - локальное назначение. Я считаю, что моя проблема была в том, что я не звонил LocalFile.close().

Вот рабочий код для загрузки изображения:

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

UploadFile.close()
FTPServer.quit()

Проблема могла также заключаться в том, что я не звонил FTPServer.quit()

Если у кого-то возникнут вопросы по поводу этого кода, я с удовольствием отвечу в комментариях; Мне очень жаль, что я оставил в покое гуглеров!

0 голосов
/ 22 марта 2009

Оказывается, я неправильно закрывал загруженный файл. Давайте притворимся, что этого никогда не было.

...