#python #typeerror
#python #ошибка типа
Вопрос:
Я новичок в python или программировании в целом, и у меня была эта проблема в течение последних нескольких часов, и я, по-видимому, ужасно пытаюсь понять, что происходит не так.
def read_file(input_filename):
file_list = []
with open(input_filename, 'r') as open_file:
for x in range(len(open_file)):
print(open_file[x] " [" str(x) "]")
if (x % 2) == 0:
thisTuple = (open_file[x], open_file[x 1])
file_list.append(thisTuple)
Я хотел бы дать что-то взамен за любую помощь больше, чем благодарность, но это действительно много значило бы, если бы кто-нибудь мог дать мне какие-либо указания на то, что я могу здесь делать неправильно.
Спасибо!
Комментарии:
1. Чего вы пытаетесь достичь?
2. Вы пытаетесь прочитать файл построчно или побайтно?
3. @Carcigenicate ах да, я забыл добавить это .. извините. «Ошибка типа: объект типа’_io.TextIOWrapper’ не имеет функции len ()» — это ошибка типа, которую я получаю.
4. Можете ли вы добавить полную трассировку ошибок в сообщение?
Ответ №1:
Причина, по которой вы получаете ошибку, заключается в этом утверждении:
for x in range(len(open_file)):
open_file
не реализует __len__
волшебную функцию Python. Это также не объект с возможностью подписки (например, строка). Это TextIOWrapper
. Если вы хотите получить данные в виде строки, вам нужно вызвать open_file.read()
:
data= open_file.read()
for x in range(len(data)):
print(data[x] " [" str(x) "]")
if (x % 2) == 0:
thisTuple = (data[x], data[x 1])
file_list.append(thisTuple)
Комментарии:
1. Большое вам спасибо! Я подумал, что это что-то с «open_file», но я не понял, что использовать вместо этого. Теперь это имеет большой смысл.
Ответ №2:
# ...
for line in open_file:
x = line.strip()
# ...