Python ftplib не может получить размер файла перед загрузкой?

Я использую ftplib для передачи файлов. Все работает отлично. Теперь я пытаюсь получить размер конечного файла перед загрузкой.

  1. Во-первых, я пытался просто получить размер с ftp.size (имя файла). Сервер жаловался, что я не могу сделать этого в режиме ASCII.

  2. Затем я пытался установить режим двоичного счета с помощью ftp.sendcmd ("двоичный файл") и ftp.sendcmd ("мусорное ведро"). В обоих случаях сервер жаловался "500 двоичных файлов, Не понятых"

ftplib может получить размер файла прежде, чем загрузить в этом экземпляре? Я не управляю FTP-сервером и не могу измениться, как он ведет себя.

Спасибо

9
задан jason 12 July 2010 в 20:17
поделиться

2 ответа

Ftplib может получить размер файла перед загрузкой. Как сказано в документации:

FTP.size(filename) Запрашивает размер файла с именем filename на сервере. В случае успеха размер файла возвращается в виде целого числа, иначе None возвращается. Обратите внимание, что команда SIZE не является стандартной, но поддерживается многими распространенными серверными реализации

Очевидно, ваш сервер не поддерживает эту функцию.

5
ответ дан 4 December 2019 в 08:00
поделиться

"Сервер пожаловался, что я не могу сделать это в режиме ascii." -- Попробуйте показать точный код, который вы использовали, и точный текст ответа сервера. Используйте копирование/вставку, не печатайте по памяти.

Есть ли у вас доступ к FTP-клиенту командной строки? Если нет, приобретите его. Используйте его для экспериментов с тем, что может делать сервер. Команда клиента типа REMOTEHELP - ваш друг. Пример:

ftp> remotehelp size
214 Syntax: SIZE <sp> pathname

Это указывает на то, что сервер, к которому я подключен, поддерживает команду SIZE.

0
ответ дан 4 December 2019 в 08:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: