Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 2, 2019 15:55:07

letema88
Зарегистрирован: 2019-09-02
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Загрузка файлов с sftp сервера

Добрый день, написал скрипт загрузки данных с sftp, выдается ошибка IsADirectoryError: Is a directory:

 import paramiko
host = "HOST"
port = 22
username = "user"
password = "pqssword"
transport = paramiko.Transport((host, port))
transport.connect(username = username, password = password)
sftp = paramiko.SFTPClient.from_transport(transport)
remotepath = '/home/exchange/reports'
localpath = '/home/exchange/reports'
sftp.get(remotepath, localpath)
sftp.close()
transport.close()
В папке reports на сервере лежат файлы, хочу что бы все файлы копировались на локальный хост

Отредактировано letema88 (Сен. 2, 2019 17:08:36)

Офлайн

#2 Сен. 2, 2019 18:05:24

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Загрузка файлов с sftp сервера

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



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Сен. 3, 2019 09:29:53

letema88
Зарегистрирован: 2019-09-02
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Загрузка файлов с sftp сервера

Я исправил, но почему то не работает

  import paramiko
host = "HOST"
port = 22
username = "user"
password = "pqssword"
transport = paramiko.Transport((host, port))
transport.connect(username = username, password = password)
sftp = paramiko.SFTPClient.from_transport(transport)
remotepath = '/home/exchange/reports'
localpath = '/home/exchange/reports'
data = sftp.listdir(remotepath)
for i in data:
    print (i)
sftp.get(data(i), localpath)
sftp.close()
transport.close()

Офлайн

#4 Сен. 3, 2019 10:04:03

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Загрузка файлов с sftp сервера

ну потому что вы не понимает что делаете. Во первых sftp.get должен быть внутри цикла. Во вторых в data у вас лежит список, а цикл for i in data вытаскивает значения из списка и присваивает х переменной i. Поэтому в вашем случае должно быть как то так sftp.get(i, localpath)
P.S. поздравляю вас, вы стали последней каплей, которая еще держала меня на форуме в качестве участника и админа. Я больше не в моральных силах помогать этому поколению “новичков”, поколению лайков и видеоуроков от подобных же неучей. Я устал, я ухожу.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Сен. 3, 2019 13:24:24

letema88
Зарегистрирован: 2019-09-02
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Загрузка файлов с sftp сервера

Помогло вот это (может кому то пригодится)

   import paramiko
host = "HOST"
port = 22
username = "user"
password = "pqssword"
transport = paramiko.Transport((host, port))
transport.connect(username = username, password = password)
sftp = paramiko.SFTPClient.from_transport(transport)
remotepath = '/home/exchange/reports'
localpath = '/home/exchange/reports'
data = sftp.listdir(remotepath)
print(data)
for i in data:
    print(i)
    sftp.get(remotepath+i, localpath+i)
sftp.close()
transport.close()
transport.close()

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version