如何在python

时间:2017-04-10 07:57:21

标签: python parameter-passing paramiko pysftp

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脚本”   写测试用例\ Paramiko.py“,第32行,in       sftp.get('{1} / {2}'。format(pwd1,b),'{2}'。format(b))IndexError:元组索引超出范围

我需要在那里传递参数,因为路径将针对不同的选择进行更改。

2 个答案:

答案 0 :(得分: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'

请参阅Format string syntax

如果您使用的是python 2.7+,则可以完全省略该数字。 (自动编号)。第二种格式可以只是b(根本不需要使用格式,因为b已经是一个字符串对象)

sftp.get('{}/{}'.format(pwd1, b), b)

答案 1 :(得分:0)

  

&#39; {2}&#39; .format(b)中

你告诉格式插入第二个参数,但只提供一个。改为{1}。