0
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))

我遇到以下错误:

Traceback(最近一次调用最后一次):文件“D:\Python scripts for writing testcase\Paramiko.py”,第 32 行,在 sftp.get('{1}/{2}'.format(pwd1,b),' {2}'.format(b)) IndexError: 元组索引超出范围

我需要如何在那里传递参数,因为路径会因不同的选择而改变。

4

2 回答 2

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+,则可以完全省略该数字。(自动编号)。而第二种格式可以是just b(完全不用format,因为b已经是字符串对象了)

sftp.get('{}/{}'.format(pwd1, b), b)
于 2017-04-10T08:00:08.450 回答
0

'{2}'.format(b)

您告诉 format 插入第二个参数,但只提供一个。更改为 {1}。

于 2017-04-10T08:01:10.903 回答