Kaizer von Maanen Kaizer von Maanen - 6 months ago 58
Python Question

Python: AttributeError: '_io.TextIOWrapper' object has no attribute 'split'

I have a textfile, let's call it

goodlines.txt
and I want to load it and make a list that contains each line in the text file.

I tried using the
split()
procedure like this:

>>> f = open('goodlines.txt')
>>> mylist = f.splitlines()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: '_io.TextIOWrapper' object has no attribute 'splitlines'
>>> mylist = f.split()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: '_io.TextIOWrapper' object has no attribute 'split'


Why do I get these errors? Is that not how I use
split()
? ( I am using
python 3.3.2
)

Answer

You are using str methods on an open file object.

You can read the file as a list of lines by simply calling list() on the file object:

with open('goodlines.txt') as f:
    mylist = list(f)

This does include the newline characters. You can strip those in a list comprehension:

with open('goodlines.txt') as f:
    mylist = [line.rstrip('\n') for line in f]