Home > Net >  Why does it seem like only the last line is being read in the text file?
Why does it seem like only the last line is being read in the text file?

Time:12-02

I'm quite new to this so do excuse any newbie errors.

So the goal of my code is to use the 3 lines of data in a text file ("Numbers.txt") to carry out some calculations line by line. I then want to write the results of these calculations into a new text file ("Newnumbers.txt").

The "Numbers.txt" file contains the following 3 lines of data:

1, 2, 3, 4, 5, 6, 7
2, 4, 6, 8, 10, 12, 14
1, 3, 5, 7, 9, 11, 13

Whenever I run this code, only the last line seems to be read. The "calcresults" prints as [2, 4, 14, 2, 4, 14, 2, 4, 14].

Where am I going wrong? I'd very much appreciate any help :)

Here's my script:

numbers = open("Numbers.txt", "r")

for line in numbers:
    (m, a, e, i, o, O, E) = line.split(",")
    print(line)
    m = int(m)
    a = int(a)
    e = int(e)
    i = int(i)
    o = int(o)
    O = int(O)
    E = int(E)

numbers.close()

x = 0
y = 0
z = 0

calcresults = []

numbers = open("Numbers.txt", "r")

for line in numbers:
    x = m*2
    y = m a
    z = m E
    calcresults.append(x)
    calcresults.append(y)
    calcresults.append(z)

print(calcresults)

calcresults = str(calcresults)

newnumbers = open("Newnumbers.txt", "w")
newnumbers.write(calcresults)

numbers.close()
newnumbers.close()`

CodePudding user response:

for line in numbers:
    (m, a, e, i, o, O, E) = line.split(",")
    print(line)
    m = int(m)
    a = int(a)
    e = int(e)
    i = int(i)
    o = int(o)
    O = int(O)
    E = int(E)

Each time through this loop, you're throwing away the previous values of m, a, e, etc.

CodePudding user response:

This is what you intended:

numbers = open("Numbers.txt", "r")

calcresults = []

for line in numbers:
    (m, a, e, i, o, O, E) = line.split(",")
    print(line)
    m = int(m)
    a = int(a)
    e = int(e)
    i = int(i)
    o = int(o)
    O = int(O)
    E = int(E)
    x = m*2
    y = m a
    z = m E
    calcresults.append(x)
    calcresults.append(y)
    calcresults.append(z)

print(calcresults)

calcresults = str(calcresults)
  • Related