Я студент, пытающийся изучать Python, и я нахожусь в тупике, превращая файл-объект в текст. Вот мой код:Получение текста из файлового объекта Python
def file2table(filename, mycaption=None):
with open(filename, 'r') as file:
return lists2table(file, mycaption)
def lists2table(mylists, mycaption=None):
result = '<table>\n'
if mycaption != None:
result += '<caption>' + mycaption + '</caption>\n'
result += list2THrow(mylists[0]) + '\n'
for item in mylists[1:]:
result += list2TDrow(item) + '\n'
result += '</table>'
return result
Ошибка:
result = '<table>\n<caption>Table with Forbes Top 50 Women</caption>\n', global list2THrow = <function list2THrow>, mylists = <_io.TextIOWrapper name='data/forbeswomen_ascii.tsv' mode='r' encoding='ANSI_X3.4-1968'>
TypeError: '_io.TextIOWrapper' object is not subscriptable
args = ("'_io.TextIOWrapper' object is not subscriptable",)
with_traceback = <built-in method with_traceback of TypeError object>
Я думаю, что вы хотите 'возвращение lists2table (file.readlines(), mycaption)', как 'lists2table', кажется, ожидает список, но не намного больше информации, трудно быть уверенным. Код довольно запутанный и, похоже, имеет опечатки. – jonrsharpe
вы также можете выполнять итерацию по файловому объекту, вам не нужно читать все в памяти, если вы не должны. –
Спасибо, Джон. «.readlines()» сделал трюк. Не совсем уверен, как это искоренить. –