Найти - Пользователи
Полная версия: ftputil - скачивание всех файлов.
Начало » Network » ftputil - скачивание всех файлов.
1 2
Divergent
host = ftputil.FTPHost('ftp.domain.com', 'user', 'password')
names = host.listdir(host.curdir)
for name in names:
if host.path.isfile(name):
host.download(papka, papka, 'b') # remote, local, binary mode
Как я понимаю что изначально задаётся host
и names это папки(а возможно и файлы) которые в текущей директории.
Далее если есть папка (возможно файл),то загружаем папку papka с ftp к себе в papka
Подскажите правильно ли я понимаю, а то что-то не получается…
Ferroman
Замените слово “паапка” на слово “файл” и всё что вы сказали будет верным.
Папки этим кодом не скачиваются - только файлы.
Divergent
А где есть примеры использования ftputil чтобы посмотреть, а то не совсем понятно.
А двух примеров которые в описании мне мало как-то.
Ferroman
Вообще-то документации, а тем более на русском, должно хватить с избытком. Тем более, все методы практически идентичны одноимённым в стандартном модуле os.
Divergent
import ftputil
import os
host = ftputil.FTPHost('trash.lan-ix.ru', 'anonymous', 'anonymous')
os.chdir('test')
target = str(os.getcwd())
host.chdir('incoming')
host.chdir('VDT')
source = str(host.getcwd())
print source+'->'+target
host.download(source, target, '')
Не знаю можно так вообще или нет, но не получается…
Хотел с FTP скопировать файлы из текущего каталога в текущий каталог на компе.
Ferroman
Раскрывайте понятие “не получается”. Что получаете, а чего ждёте?
Divergent
/incoming/VDT->C:\Python26\test

Traceback (most recent call last):
File “C:/Python26/ftp.py”, line 10, in <module>
host.download(source, target, '')
File “C:\Python26\lib\ftputil.py”, line 460, in download
self.__copy_file(source, target, mode, self.file, open)
File “C:\Python26\lib\ftputil.py”, line 434, in __copy_file
source = source_open(source, source_mode)
File “C:\Python26\lib\ftputil.py”, line 228, in file
host._file._open(effective_file, mode)
File “C:\Python26\lib\ftp_file.py”, line 132, in _open
self._session.transfercmd, command)
File “C:\Python26\lib\ftp_error.py”, line 173, in _try_with_ioerror
raise FTPIOError(*exc.args)
FTPIOError: 550 Failed to open file.
Debugging info: ftputil 2.4.2, Python 2.6.5 (win32)
это распечатка того что получается, ну а то что хочу получит писал немного выше.

О каком файле идёт речь FTPIOError: 550 Failed to open file?
Скопировать файлы из текущей директории FTP в текущую директорию компа.
Ferroman
Перед закачкой отправьте команду “TYPE I”.
Проверьте правильность путей к файлу на фтп, наличие необходимых для чтения прав.
Divergent
Как её отправить через питон?
Через обычный ftp отправил…
Команда: TYPE I
Ответ: 200 Switching to Binary mode.
на файл есть все права. В общем я туда его и закинул, для тестирования.
Файл лежит в директории VDT, в которую я и захожу и присваю к переменной source/

Пробовал загружать на ftp.
Пишет
Traceback (most recent call last):
File “C:\Python26\ftp2.py”, line 22, in <module>
host.upload(source, target, '')
File “C:\Python26\lib\ftputil.py”, line 450, in upload
self.__copy_file(source, target, mode, open, self.file)
File “C:\Python26\lib\ftputil.py”, line 434, in __copy_file
source = source_open(source, source_mode)
IOError: Permission denied: ‘C:\\Python26\\test’
Divergent
Переделал и получилось…
Вот код.
import ftputil
import os
host = ftputil.FTPHost('trash.lan-ix.ru', 'anonymous', 'anonymous')
os.chdir('test')
host.chdir('incoming')
host.chdir('VDT')
names = host.listdir(host.curdir)
for name in names:
if host.path.isfile(name):
host.download(name, name, 'b')
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB