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?
Answers:
I am not sure about Python but most languages have push/append function for arrays.
It’s a lot easier than that:
List = open("filename.txt").readlines()
This returns a list of each line in the file.
my_list = [line.split(',') for line in open("filename.txt")]
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.
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 ]
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(','))
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.
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())
… 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()
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?
I am not sure about Python but most languages have push/append function for arrays.
It’s a lot easier than that:
List = open("filename.txt").readlines()
This returns a list of each line in the file.
my_list = [line.split(',') for line in open("filename.txt")]
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.
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 ]
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(','))
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.
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())
… 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()