ValueError: need more than 4 values to unpack

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
rtz26
User
Beiträge: 2
Registriert: Samstag 30. August 2008, 15:36

ValueError: need more than 4 values to unpack

Beitragvon rtz26 » Samstag 30. August 2008, 15:59

Hallo,

ich habe einige Schwierigkeiten ein Paar Zeilen Python Code zum Laufen zu bringen:

[code=]Dom0:~$ python
Python 2.5.2 (r252:60911, Aug 8 2008, 09:22:44)
[GCC 4.3.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>exit()

Dom0:~$ /usr/share/dtc-xen/graph/xenupdate.py /var/lib/rrdtool/
Traceback (most recent call last):
File "/usr/share/dtc-xen/graph/xenupdate.py", line 29, in <module>
name,id,mem,cpu,state,cputime=domain
ValueError: need more than 4 values to unpack
[/code]

nun der Quellcode:

Code: Alles auswählen

#!/usr/bin/python
import sys
import os
import re
import time
from subprocess import Popen,call,PIPE
from glob import glob

def check_call(*args):
   retval = call(*args)
   if retval != 0: raise Exception, "call() failed with error %s: %s"%(retval,args)
   return retval

tabsplitter = re.compile("[\t ]+").split

if len(sys.argv) < 2:
    print "Syntax: %s <rrdbasename> [--test]"%sys.argv[0]
    sys.exit(os.EX_USAGE)

now = "%d"%time.time()
basename = sys.argv[1]
domains = (
      tabsplitter(d.strip())
      for d in Popen(["/usr/sbin/xm","list"], stdout=PIPE).communicate()[0].splitlines()[1:]
      if d.strip()
   )
for domain in domains:

    name,id,mem,cpu,state,cputime=domain[0:6]
...


Ich bin zwar ziemlich fit in Java, habe leider (noch) keine Python Kenntnisse :( Kann mir jemand sagen was in der 29. Zeile schief geht?

Danke schon mal im Voraus! :)

Grüße,
Alex
EyDu
User
Beiträge: 4868
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Samstag 30. August 2008, 16:09

Füge in Zeile 28 mal ein

Code: Alles auswählen

print domain[0:6]


ein, dann wird es dir sicher sofort auffallen.
rtz26
User
Beiträge: 2
Registriert: Samstag 30. August 2008, 15:36

Beitragvon rtz26 » Samstag 30. August 2008, 17:31

Hallo EyDu,

Danke für die schnelle Antwort!

[code=]Dom0:~$ /usr/share/dtc-xen/graph/xenupdate.py /var/lib/rrdtool/
['Dom1', '256', '2', '19.3']
Traceback (most recent call last):
File "/usr/share/dtc-xen/graph/xenupdate.py", line 29, in <module>
name,id,mem,cpu,state,cputime=domain[0:6]
ValueError: need more than 4 values to unpack[/code]

Ich glaube ich weiss nun, woran es liegt. 'xm list' müsste eine 6 Spalten Tabelle ausgeben, wird aber nur 4 (ID und State fehlen) ausspucken, wenn ein Gast nicht gestartet ist:

[code=]#xm list
Name ID Mem VCPUs State Time(s)
Dom1 256 2 19.3
Domain-0 0 1977 2 r----- 2865.6

[/code]

Ich werde versuchen den anderen zwei einen default Wert zuzuweisen. Wenn ich es nicht schaffe, melde ich mich wieder! :P


Danke!

Edit: ich bin mir ziemlich sicher dass es niemanden interessiert, trotzdem hier ist die Lösung:
in die 28. Zeile

Code: Alles auswählen

if domain.__len__()==4 : continue

einfügen.

Wer ist online?

Mitglieder in diesem Forum: __deets__, Bing [Bot]