Как я могу просмотреть следующий символ в файле в Python 3?

#python-2.7 #python-3.x #seek #peek

#python-2.7 #python-3.x #искать #заглянуть

Вопрос:

Предположим, я создаю синтаксический анализатор и хочу просмотреть поток.

В Python 2 я мог бы написать:

 def peek():
    next = inputfile.read(1)
    inputfile.seek(-1,1)
    return next
 

однако в Python 3 относительный поиск был отключен.

Ответ №1:

Это не работает в текстовом режиме, но работает в двоичном режиме:

 >>> open('test', 'rb').peek(1)
b'testn'
 

Ответ №2:

Вместо этого вы можете использовать inputfile.peek(1)[:1] .

Комментарии:

1. У меня это не работает с ошибкой «AttributeError: объект ‘_io.TextIOWrapper’ не имеет атрибута ‘peek'»

Ответ №3:

 file.read(1)
file.seek(file.tell()-1)