Частичная загрузка с помощью storbinary на python

StackOverflow https://stackoverflow.com/questions/670084

  •  21-08-2019
  •  | 
  •  

Вопрос

Я написал некоторый код на Python для загрузки изображения с помощью

urllib.urlopen().read()

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

ftplib.FTP().storbinary()

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

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

Это было полезно?

Решение 2

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

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

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()

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top