Невозможно извлечь zip в python в папку назначения (сервер) с моего локального хоста

#python #ssh #sftp #paramiko

#python #ssh #sftp #парамико

Вопрос:

Я не могу извлечь zip-файл в python в папку назначения (сервер) с моего локального хоста. При извлечении с помощью z.extract(name,"/destination/") он не может найти папку назначения, поскольку пытается выполнить поиск в папке назначения локально, а не на сервере.

     transport = paramiko.Transport((destinationIP))
    transport.connect(username = destinationuserName, password =   destinationPassword)
    sftp = paramiko.SFTPClient.from_transport(transport)

    fh = sftp.open('/destination/xxx.zip', 'rb')
    z = zipfile.ZipFile(fh)
    for name in z.namelist():
        print name
        z.extract(name,"/destination/") 
    fh.close()
    sftp.close()
  

Комментарии:

1. Есть ли причина, по которой вы не используете scp и tar?

2. нет причин, есть идеи d-coder

3. Я предполагаю, что вы запускаете этот скрипт на локальном хосте .. если да, то .. ДА, ваш скрипт будет искать только ваш локальный..

4. да .. вы правы. я запускаю это в своем локальном

Ответ №1:

Похоже, вы хотели бы, чтобы извлеченные файлы отображались на сервере, даже если вы извлекаете их на клиентском компьютере. К сожалению, это не сработает, поскольку zipfile.extract метод предполагает, что его вторым аргументом является локальный путь.

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

Если у вас есть доступ оболочки к серверу, рассмотрите возможность использования чего-то вроде fabric или paramiko для выполнения необходимых команд в серверной системе.