>print temp1[x], temp2[x]

This won't work. 

>>> fob = []
>>> gab = ["fooBar","Baz","aBBa"]
>>> for line in gab:
...     print line, 
...     x = line.replace('B', 'X')
...     print x
...     fob.append(x)
...     print fob[line]
...     
fooBar fooXar
Traceback (most recent call last):
  File "<interactive input>", line 6, in ?
TypeError: list indices must be integers

>ValueError: unpack list of wrong size
What should I do?

Catch the exception - 

try:
  (temp11, temp22, pyra11, pyra22, voltage11, current11) = y.split('\t')
except ValueError:
   print "Line:", y
   print len(y.split('\t')), "items found"
 
And see what's going wrong. You get a ValueError like that one like so - 
>>> x = ["1,2,3",
               "4,5,6",
                "7,8"]
>>> for af in x:
...     (a,b,c) = af.split(',')
...     print a,b,c
...     
1 2 3
4 5 6
Traceback (most recent call last):
  File "<interactive input>", line 2, in ?
ValueError: unpack list of wrong size

See, it's trying to get 3 items from each split, but the last one only
gives 2 items.

So, print the offending line, I'm guessing it's a blank "\n"  or "\t" line.

Regards, 

Liam Clarke


On Wed, 30 Mar 2005 17:08:07 +0800, jrlen balane <[EMAIL PROTECTED]> wrote:
> after running this in IDLE:
> 
> import sys
> import serial
> import sys, os
> import serial
> import string
> import time
> from struct import *
> 
> temp1 = []
> temp2 = []
> pyra1 = []
> pyra2 = []
> voltage = []
> current = []
> 
> data_file = open('C:/Documents and Settings/nyer/My
> Documents/Info/info2/200503300858.txt', 'r')
> data = data_file.readlines()
> for x in data:
>     y = str(x)
>     (temp11, temp22, pyra11, pyra22, voltage11, current11) = y.split('\t')
>     temp11Integer = map(int, temp11)
>     temp22Integer = map(int, temp22)
>     pyra11Integer = map(int, pyra11)
>     pyra22Integer = map(int, pyra22)
>     voltage11Integer = map(int, voltage11)
>     current11Integer = map(int, current11)
> 
>     print temp11Integer, temp22Integer, pyra11Integer, pyra22Integer,
> voltage11Integer, current11Integer
> 
>     temp1.append(temp11Integer)
>     temp2.append(temp22Integer)
>     pyra1.append(pyra11Integer)
>     pyra2.append(pyra22Integer)
>     voltage.append(voltage11Integer)
>     current.append(current11Integer)
> 
>     print temp1[x], temp2[x]
> 
> an error:
> Traceback (most recent call last):
>   File "C:/Python23/practices/read.py", line 21, in -toplevel-
>     (temp11, temp22, pyra11, pyra22, voltage11, current11) = y.split('\t')
> ValueError: unpack list of wrong size
> 
> What should i do??
> 
> 
> On Wed, 30 Mar 2005 00:29:05 -0800, jrlen balane <[EMAIL PROTECTED]> wrote:
> > so basically, i'll just do this to append the data to the list:
> >
> > temp1[]=0
> > temp2[]=0
> > pyra1[] =0
> > pyra2[] =0
> > voltage[] =0
> > current[] =0
> >
> > data_file = open(os.path.normpath(self.TextFile.GetValue()), 'r')
> >
> > for x in data:
> >   y = str(x)
> >  ( temp11, temp22, pyra11, pyra22, voltage11, current11) = y.split('\t')
> >  temp11Integer = map(int, temp11)
> >  temp22Integer = map(int, temp22)
> >  pyra11Integer = map(int, pyra11)
> >  pyra22Integer = map(int, pyra22)
> >  voltage11Integer = map(int, voltage11)
> >  current11Integer = map(int, current11)
> >
> >  temp1.append(temp11Integer)
> >  temp2.append(temp22Integer)
> >  pyra1.append(pyra11Integer)
> >  pyra2.append(pyra22Integer)
> >  voltage.append(voltage11Integer)
> >  current.append(current11Integer)
> >
> >
> > On Wed, 30 Mar 2005 20:07:42 +1200, Liam Clarke <[EMAIL PROTECTED]> wrote:
> > > So... you need those tabs? If you don't need them, go like this -
> > >
> > > > data_file = open(os.path.normpath(self.TextFile.GetValue()), 'r')
> > > for x in data:
> > >     y = str(x)
> > >    ( temp11, temp22, pyra11, pyra22, voltage11, current1) = y.split('\t')
> > >
> > > And that should be all your values, separated in string format.
> > >
> > >
> > > On Tue, 29 Mar 2005 20:56:16 -0800, jrlen balane <[EMAIL PROTECTED]> 
> > > wrote:
> > > > how should i modify this data reader:
> > > > (assumes that there is only one entry per line followed by '\n')
> > > >
> > >
> > > > data = data_file.readlines()
> > > >
> > > > self.irradianceStrings = map(str, data)
> > > > self.irradianceIntegers = map(int, data)
> > > > self.IrradianceExecute.SetValue(''.join(self.irradianceStrings))
> > > >
> > > > so that i can read the text file created by this:
> > > >
> > > > self.filename = "%s\%s.txt"
> > > > %(os.path.normpath(self.SaveFolder.GetValue()),time.strftime("%Y%m%d%H%M"))
> > > >
> > > > self.table_file = open(self.filename,"a")
> > > > self.table_file.write('%f\t'%self.temp11)
> > > > self.table_file.write('%f\t'%self.temp22)
> > > > self.table_file.write('%f\t'%self.pyra11)
> > > > self.table_file.write('%f\t'%self.pyra22)
> > > > self.table_file.write('%f\t'%self.voltage11)
> > > > self.table_file.write('%f\t'%self.current11)
> > > > self.table_file.write('\n')
> > > > self.table_file.close()
> > > >
> > > >
> > > > On Tue, 15 Mar 2005 17:05:46 +1300, Liam Clarke <[EMAIL PROTECTED]> 
> > > > wrote:
> > > > > Whoops, golden rule - "Never post untested code"
> > > > > Sorry.
> > > > >
> > > > >
> > > > > On Mon, 14 Mar 2005 21:05:44 -0500, Kent Johnson <[EMAIL PROTECTED]> 
> > > > > wrote:
> > > > > > jrlen balane wrote:
> > > > > > > ok, i've done what sir Kent just said, my fault...
> > > > > > >
> > > > > > > but an error still occurs:
> > > > > > > Traceback (most recent call last):
> > > > > > >   File "C:\Python23\practices\opentxtprintlngnew.py", line 18, in 
> > > > > > > -toplevel-
> > > > > > >     print process(data)
> > > > > > >   File "C:\Python23\practices\opentxtprintlngnew.py", line 10, in 
> > > > > > > process
> > > > > > >     tempLine = int(line)
> > > > > > > ValueError: invalid literal for int(): abc
> > > > > > >
> > > > > > > isn't this the job of :
> > > > > > >
> > > > > > > except TypeError:
> > > > > > >             print "Non numeric character in line", line
> > > > > > >             continue #Breaks, and starts with next line
> > > > > >
> > > > > > Yes, only it should be ValueError instead of TypeError. You can 
> > > > > > check this interactively:
> > > > > >   >>> int('foo')
> > > > > > Traceback (most recent call last):
> > > > > >    File "<stdin>", line 1, in ?
> > > > > > ValueError: invalid literal for int(): foo
> > > > > >
> > > > > > Kent
> > > > > >
> > > > > > _______________________________________________
> > > > > > Tutor maillist  -  Tutor@python.org
> > > > > > http://mail.python.org/mailman/listinfo/tutor
> > > > > >
> > > > >
> > > > > --
> > > > > 'There is only one basic human right, and that is to do as you damn 
> > > > > well please.
> > > > > And with it comes the only basic human duty, to take the consequences.
> > > > > _______________________________________________
> > > > > Tutor maillist  -  Tutor@python.org
> > > > > http://mail.python.org/mailman/listinfo/tutor
> > > > >
> > > >
> > >
> > > --
> > > 'There is only one basic human right, and that is to do as you damn well 
> > > please.
> > > And with it comes the only basic human duty, to take the consequences.
> > >
> >
> 


-- 
'There is only one basic human right, and that is to do as you damn well please.
And with it comes the only basic human duty, to take the consequences.
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to