Я использую ftplib для передачи файлов. Все работает отлично. Теперь я пытаюсь получить размер конечного файла перед загрузкой.
Во-первых, я пытался просто получить размер с ftp.size (имя файла). Сервер жаловался, что я не могу сделать этого в режиме ASCII.
Затем я пытался установить режим двоичного счета с помощью ftp.sendcmd ("двоичный файл") и ftp.sendcmd ("мусорное ведро"). В обоих случаях сервер жаловался "500 двоичных файлов, Не понятых"
ftplib может получить размер файла прежде, чем загрузить в этом экземпляре? Я не управляю FTP-сервером и не могу измениться, как он ведет себя.
Спасибо
Ftplib может получить размер файла перед загрузкой. Как сказано в документации:
FTP.size(filename) Запрашивает размер файла с именем filename на сервере. В случае успеха размер файла возвращается в виде целого числа, иначе None возвращается. Обратите внимание, что команда SIZE не является стандартной, но поддерживается многими распространенными серверными реализации
Очевидно, ваш сервер не поддерживает эту функцию.
"Сервер пожаловался, что я не могу сделать это в режиме ascii." -- Попробуйте показать точный код, который вы использовали, и точный текст ответа сервера. Используйте копирование/вставку, не печатайте по памяти.
Есть ли у вас доступ к FTP-клиенту командной строки? Если нет, приобретите его. Используйте его для экспериментов с тем, что может делать сервер. Команда клиента типа REMOTEHELP - ваш друг. Пример:
ftp> remotehelp size
214 Syntax: SIZE <sp> pathname
Это указывает на то, что сервер, к которому я подключен, поддерживает команду SIZE.