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