Python Problem reading file manipualting values therein, Python

AI Thread Summary
The discussion revolves around troubleshooting a code snippet intended to read integers from a file, store them in a list, and calculate their average. The initial code fails due to improper handling of string data, specifically the presence of newline characters and the incorrect conversion of strings to integers. The error message indicates that the code attempts to convert a list of strings, which includes newline characters, into an integer, leading to a ValueError. To resolve the issue, it's suggested to convert each line read from the file into an integer immediately after reading it, rather than appending the raw string to the list. This approach ensures that only valid integers are stored, allowing for accurate calculations. The discussion emphasizes the importance of understanding data types and the need to clean the input (e.g., stripping newline characters) before conversion. Overall, the key takeaway is to read, convert, and store integers correctly to avoid type-related errors in the code.
mr.me
Messages
49
Reaction score
0
I was trying to write code that would read integers stored in a file, line by line and then save them to a list and average that list and display it, it didn't work. What can I do to correct this code, I believe that the error is in how I am treating the list but I am confused at why the interpreter can't understand it.

I'm still to this and appreciate the help

-- The attempt at a solution


Code:
if (os.path.isfile("Testing_1.txt")):
     inFile = open("Testing_1.txt", "r")
     list_to_av=[ ] 

     inLine = inFile.readline()
     while len(inLine) > 0:
        
          inLine = inFile.readline()
          list_to_av.append((inLine))
     print  int(str(list_to_av))/ len(list_to_av)
     inFile.close()
else:
     print "Testing_1.txt cannot be found."
 
Last edited:
Technology news on Phys.org
There are several errors in there. But it's best that you find them yourself. When I run that with a sample input file, I get:
ValueError: invalid literal for int() with base 10: "['2\\n', '3\\n', '']"
Doesn't that mean something to you? What is 'int' supposed to do?
 
Last edited:
int is supposed to convert the data type in this case the literal values aren't only "numbers" so it crashes

I understand that error but I don't understand what the correct approach is
 
int converts a string to a single number. If it can. And it doesn't sum over numbers in the string. "['2\\n', '3\\n', '']" doesn't convert to single number. It's a string representation of a list of strings. Maybe you should convert the strings to numbers as they are read in and sum the numbers? The error message from 'int' is giving you the string it was trying to convert. Try and empathize with 'int' and figure you why you would have a hard time converting that to a number.
 
I understand that int can't convert the strings in the list because of the \\n, because it is not a number like I said above

What I don't understand is where or how I use the list to provide me with something that is not a string but is and integer

If I attempt to take the strings and store them as they are read how would I convert them to ints?
 
mr.me said:
I understand that int can't convert the strings in the list because of the \\n, because it is not a number like I said above

What I don't understand is where or how I use the list to provide me with something that is not a string but is and integer

If I attempt to take the strings and store them as they are read how would I convert them to ints?

Why don't you convert inLine to an integer and store the integers into a list?
 
I see fo the reason that it has the read in it I didn't think I could convert inLine, and so never tried when fiddling around with the code, I wonder why I thought that.
 
Back
Top