Как режим чтения open() Python и двоичный режим чтения обрабатывают нулевые байты и f.seek?Python

Программы на Python
Anonymous
Как режим чтения open() Python и двоичный режим чтения обрабатывают нулевые байты и f.seek?

Сообщение Anonymous »

Я провел 3 эксперимента
  • режим rb
  • режим r
  • режим r с поиском различных байтов смещения

Код: Выделить всё

with open("small_file.txt", "w") as f:
f.seek(2)
f.write("Content")

with open("small_file.txt", "rb") as f:
content = f.read()
print(f"START|{content}|END")
f.seek(2) во время записи вставляет несколько нулевых байтов (2 — произвольные).
Вывод: START|b'\x00\x00Content'|END (здесь нет ничего удивительного)
Если я изменю rb на r, я получу START| Content|END.
Вопрос 1. Каковы основные концепции, объясняющие поведение отсутствия чтения (или чтения, но не печати?) нулевых байтов? это указано в какой-либо документации?
Потом я добавил поиск перед чтением

Код: Выделить всё

with open("small_file.txt", "w") as f:
f.seek(2)
f.write("Content")

with open("small_file.txt", "r") as f:
f.seek(3)
content = f.read()
print(f"START|{content}|END")
который возвращает START|ontent|END.
Я вижу, что поведение может быть любым

Подробнее здесь: https://stackoverflow.com/questions/787 ... -bytes-and

Вернуться в «Python»