Seite 1 von 1

List-Object wird durch return zu NoneType-Object

Verfasst: Sonntag 7. Juli 2013, 03:54
von bankkind
Hallo zusammen,
ich habe ein kleines Problem. Ich nutze in einem Tool Paramiko (SSH über Python).
Dort gebe ich Kommandos an Linux-Systeme weiter und will den output auswerten.
Wenn ich den Output mit meiner Methode direkt ausgebe, dann habe ich keine Probleme.
Ich will nun aber den Output als Liste über return zurückgeben.
So könnte ich später den Output besser auswerten.
Das Funktioniert jedoch nicht, denn sobald ich die zuvor erstellte Liste per return zurückliefere und darauf zugreifen will sagt mit Python "TypeError: 'NoneType' object is not iterable"

Code-Ausschnitt der Methode:

Code: Alles auswählen

stdin, stdout, stderr = ssh.exec_command(command)

output_list = []
print "stdout-objekt: "+ type(stdout) # Debug <class 'paramiko.ChannelFile'>

for output_line in stdout.readlines():
    print "output_line: "+type(output_line) # Debug <type 'list'>
    output_list.append(host+': '+output_line.strip())
    """ Wenn ich output_line.strip()) direkt per print ausgebe, dann funktioniert es auch """

for output_line in stderr.readlines():
    output_list.append(host+': '+output_line.strip())
    """ Wenn ich output_line.strip()) direkt per print ausgebe, dann funktioniert es auch """

print type(output_list) # Debug -> <type 'list'>

return output_list
So greife ich auf das ganze zu:

Code: Alles auswählen

output = a.remote_cmd('uptime')
print type(output) # Debug -> <type 'NoneType'>
for line in list(output):
    print line
Fehlermeldung:
"TypeError: 'NoneType' object is not iterable"

Hat jemand eine Erklärung für dieses Verhalten? Wieso verändert sich der Datentyp der Variable?

Re: List-Object wird durch return zu NoneType-Object

Verfasst: Sonntag 7. Juli 2013, 08:44
von Sirius3
@bankkind: der Fehler liegt nicht da, wo Du ihn vermutest. Ohne ein lauffähiges Beispielprogramm, das den Fehler produziert, können wir Dir hier auch nicht helfen.