Python: AttributeError: объект '_io.TextIOWrapper' не имеет атрибута 'split'

У меня есть текстовый файл, позвоните ему goodlines.txt, и я хочу загрузить его и составить список, содержащий каждую строку в текстовом файле.

Я попытался использовать процедуру split() следующим образом:

>>> 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'

Почему я получаю эти ошибки? Разве это не то, как я использую split()? (Я использую python 3.3.2)

Ответ 1

Вы используете методы str для объекта открытого файла.

Вы можете прочитать файл как список строк, просто набрав list() в файловом объекте:

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

Это включает символы новой строки. Вы можете разбить их в понимании списка:

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

Ответ 2

Попробуйте следующее:

 >>> f = open('goodlines.txt')
 >>> mylist = f.readlines()
Функция

open() возвращает объект файла. И для файлового объекта нет такого метода, как splitlines() или split(). Вы можете использовать dir(f) для просмотра всех методов файлового объекта.

Ответ 3

Вы не читаете содержимое файла:

my_file_contents = f.read()

Смотрите документы для получения дополнительной информации

Вы можете, не вызывая read() или readlines() цикл над вашим файловым объектом:

f = open('goodlines.txt')
for line in f:
    print(line)

Если вам нужен список из него (без \n, как вы просили)

my_list = [line.rstrip('\n') for line in f]

Ответ 4

hidhfapiojdp9wddwqdQWDqwdsgrtgfgseresrgse rgergdrgdrg

gregergeargasergaserf egergergesrgsg ergserg ergsergsreg rgrgsregsergrgsergser