Create a List that contain each Line of a File

Question:

I’m trying to open a file and create a list with each line read from the file.

   i=0
   List=[""]
   for Line in inFile:
      List[i]=Line.split(",")
      i+=1
   print List

But this sample code gives me an error because of the i+=1 saying that index is out of range.
What’s my problem here? How can I write the code in order to increment my list with every new Line in the InFile?

Asked By: UcanDoIt

||

Answers:

I am not sure about Python but most languages have push/append function for arrays.

Answered By: Din

It’s a lot easier than that:

List = open("filename.txt").readlines()

This returns a list of each line in the file.

Answered By: Brian C. Lane
my_list = [line.split(',') for line in open("filename.txt")]
Answered By: orip

A file is almost a list of lines. You can trivially use it in a for loop.

myFile= open( "SomeFile.txt", "r" )
for x in myFile:
    print x
myFile.close()

Or, if you want an actual list of lines, simply create a list from the file.

myFile= open( "SomeFile.txt", "r" )
myLines = list( myFile )
myFile.close()
print len(myLines), myLines

You can’t do someList[i] to put a new item at the end of a list. You must do someList.append(i).

Also, never start a simple variable name with an uppercase letter. List confuses folks who know Python.

Also, never use a built-in name as a variable. list is an existing data type, and using it as a variable confuses folks who know Python.

Answered By: S.Lott

f.readlines() returns a list that contains each line as an item in the list

if you want eachline to be split(“,”) you can use list comprehensions

[ list.split(",") for line in file ]
Answered By: hasen

Please read PEP8. You’re swaying pretty far from python conventions.

If you want a list of lists of each line split by comma, I’d do this:

l = []
for line in in_file:
    l.append(line.split(','))

You’ll get a newline on each record. If you don’t want that:

l = []
for line in in_file:
    l.append(line.rstrip().split(','))
Answered By: Dustin

I did it this way

lines_list = open('file.txt').read().splitlines()

Every line comes with its end of line characters (nr); this way the characters are removed.

Answered By: Absulit

Assuming you also want to strip whitespace at beginning and end of each line, you can map the string strip function to the list returned by readlines:

map(str.strip, open('filename').readlines())
Answered By: Jonathan Koren

… Also If you want to get rid of n

In case the items on your list are with n and you want to get rid of them:

with open('your_file.txt') as f:
    list= f.read().splitlines() 
Answered By: Andre Nevares
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.