Во-первых, я поставлю под сомнение вашу веру в то, что вам действительно нужно это сделать.
with open("babar.txt", 'rb') as file:
text = file.read()
print(text[42])
Затем, каков реальный способ сделать это:
with open("babar.txt", 'rb') as file:
file.seek(42)
print(file.read(1))
Первые загрузкивсе в ОЗУ, и (если ваш файл помещается в ОЗУ) это невероятно быстро.Второй путь невероятно медленный.
Чтобы вернуться на один байт, вы можете сделать следующее:
with open("babar.txt", 'rb') as file:
file.seek(42)
print(file.read(1))
file.seek(-1, 1) # goes back by one relative to current position
print(file.read(1)) # reeds the same char
file.seek(-1, 2) # goes at the end of the file
print(file.read(1)) # reads the last char
Проверить аргумент whence
seek()
.
Как правило, можно предположить, что доступ к ОЗУ в 1000 раз быстрее, чем доступ к жесткому диску, поэтому это, вероятно, в 1000 раз медленнее, чем первый вариант.