[Tutor] Read a matrix with lines in different behavior
Peter Otten
__peter__ at web.de
Fri May 23 15:55:47 CEST 2014
Felipe Melo wrote:
> Hello,
>
> I want to read the below matrix, identify when the characters in front of
> "want = " are equal to "1" and then save in an array and in an output file
> the characters above. But I don't know how to identify the second line and
> store in a variable:
>
> alpha=0 beta=2 gamma=50
> want = 0
> alpha=0 beta=2 gamma=50
> want = 1
> alpha=0 beta=2 gamma=50
> want = 0
> alpha=0 beta=2 gamma=50
> want = 1
> alpha=0 beta=2 gamma=50
> want = 0
>
>
> This is part of the code:
>
> try:
> datadir = '/home/me/Test_python/'
>
> fileHandle = open( "%s/teste.txt"%datadir, 'r'
> )
> vector = [ ]
> for line in fileHandle.readlines():
> line=line.strip()
> a = line.split(" ")[0]
> print a
> b = line.split(" ")[1]
> print b
> c = line.split(" ")[2]
> print c
> d = line.split(" ")[3]
> print d
> if d == "1":
> vector.append([a,b,c])
> n = n + 1
> fileHandle.close()
> file = open("saida.txt","w")
> for cont in range(n):
> file.write = vector
>
>
> except:
> print "Exception"
> sys.exit( 1 )
>
>
> When I execute the code there is an error when the loop finds the second
> line
>
>
> [felipe at grumari Test_python]$ python verificar.py
> alpha=0
> beta=2
> gamma=50
> Exception
Felipe you're shooting yourself in the foot when you put the
try:
... # error occurs here
except: # catch everything
... # show a generic message
around the part of the code that does the actual work.
Remove the try...except, and see if you can make sense of the traceback and
the error message you get. The message will say what exactly went wrong, and
the traceback will show where it went wrong.
If with this valuable information you still cannot fix the code yourself
come back here, but this time post the traceback (use copy and paste, don't
rephrase) to make it easier for us to help you fix the bug.
Random hints:
- your code seems to expect
> alpha=0 beta=2 gamma=50
> want = 0
on a single line. Either adjust the data or the code.
- writing to a file is spelt
file.write(some_string)
- you can iterate over lists, no need for range():
for item in items:
... # do something with item
- you can iterate over files, no need for readlines():
for line in file:
... # do something with line
More information about the Tutor
mailing list