有一个类,它应该使用paramiko创建一个描述与远程Linux服务器连接的对象。
class Oracle:
def __init__(self):
...
self.outfile = outfile
在这堂课中我有2个功能。一个返回文件列表:
def oratab(self):
self.remote.send("cat /etc/oratab\n")
...
return oralst
> [u'one', u'oneone', u'oneoneone']
另一个使用oratab func:
中的文件列表从远程服务器返回信息def get_arcs(self, n):
yield basestatus, sum(lst)
self.remote.send("exit\n")
time.sleep(1)
如果我手动将值传递给get_arcs,则可以正常工作 如果我手动调用oratab,它就可以了 如果我将这两个函数聚合在一起:
for i, y in zip(instance.get_arcs(), instance.oratab()):
print i, y
它返回相同的结果两次,即使它应该修剪到最小的一个(两个列表都是3个元素大) 因此,如果我调用任何没有其他函数调用的那些它看起来不错,但如果它们在同一个脚本中执行,则结果是意外的(即使没有zip())
答案 0 :(得分:1)
get_arcs()
是一个生成器,oratab()
不是。尝试使用
zip(list(instance.get_arcs()), instance.oratab())
答案 1 :(得分:1)
最后我明白了:
for i, b in zip((0, 1, 2), instance.oratab()):
print list(instance.get_arcs(i)), b