Как передать аргументы для sftp.get в python

a = raw_input("Select your project: ")
stdin, stdout, stderr = ssh.exec_command('cd test \n cd software \n cd {0} \n ls'.format(a))
softwares = stdout.readlines()

Я получил результат для этого. Но когда я пытаюсь получить вывод для следующих строк кода,

stdin, stdout, stderr = ssh.exec_command('cd test \n cd software \n cd {0} \n pwd'.format(a))
pwd = stdout.readlines()
pwd1 = '\n'.join(pwd)
print pwd1

b = raw_input("Select the software you want to download: ")

sftp = ssh.open_sftp()
sftp.get('{1}/{2}'.format(pwd1,b),'{2}'.format(b))

Я сталкиваюсь с ошибкой ниже:

Трассировка (последний последний вызов): файл «Сценарии D:\Python для написания testcase\Paramiko.py», строка 32, в sftp.get('{1}/{2}'.format(pwd1,b),' {2}'.format(b)) IndexError: индекс кортежа вне допустимого диапазона

Как мне нужно передать туда аргументы, так как путь будет меняться для разных выборов.


person Surya G    schedule 10.04.2017    source источник


Ответы (2)


число в строке формата должно начинаться с 0, а не с 1.

>>> '{1}'.format(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: tuple index out of range
>>> '{0}'.format(1)
'1'
>>> '{}'.format(1)  # auto numbering
'1'

См. Синтаксис форматирования строки.

Если вы используете Python 2.7+, вы можете полностью опустить число. (автонумерация). И второй формат может быть просто b (вообще не нужно использовать формат, потому что b уже является строковым объектом)

sftp.get('{}/{}'.format(pwd1, b), b)
person falsetru    schedule 10.04.2017

'{2}'.формат(б)

Вы указываете формату вставить второй аргумент, но предоставляете только один. Изменить на {1}.

person Christian König    schedule 10.04.2017