Найти - Пользователи
Полная версия: Загрузка файлов с sftp сервера
Начало » Python для новичков » Загрузка файлов с sftp сервера
1
letema88
Добрый день, написал скрипт загрузки данных с 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 на сервере лежат файлы, хочу что бы все файлы копировались на локальный хост
JOHN_16
get - это метод получения конкретного файла.
Что бы решить вашу задачу нужно рекурсивно проходить удаленную директорию и копировать каждый файл
letema88
Я исправил, но почему то не работает
  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()
JOHN_16
ну потому что вы не понимает что делаете. Во первых sftp.get должен быть внутри цикла. Во вторых в data у вас лежит список, а цикл for i in data вытаскивает значения из списка и присваивает х переменной i. Поэтому в вашем случае должно быть как то так sftp.get(i, localpath)
P.S. поздравляю вас, вы стали последней каплей, которая еще держала меня на форуме в качестве участника и админа. Я больше не в моральных силах помогать этому поколению “новичков”, поколению лайков и видеоуроков от подобных же неучей. Я устал, я ухожу.
letema88
Помогло вот это (может кому то пригодится)
   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()
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