Вы можете использовать код типа 's'
для записи двоичной строки фиксированной длины.Например, '10s'
указывает строку байтов длиной 10, как описано в документации .
. Здесь есть две важные проблемы:
Процесс преобразования строки в двоичное представление требует кодировки .ASCII - одна из таких кодировок, а UTF-8 - другая, более современная.Вы можете кодировать строку в Python следующим образом:
'foo'.encode('utf-8')
Вы не можете просто сохранить строку в двоичном потоке, не кодировав ее каким-либо образом.То, как вы это сделаете, является вашим решением.
Строка обычно не является структурой данных фиксированной длины.Если вы хотите иметь возможность читать строку из вашей структуры данных после ее записи, вам нужно будет знать, как долго это будет продолжаться.Иначе как узнать, сколько байтов нужно прочитать?Вы можете ограничиться хранением строк с двоичными представлениями фиксированной длины (например, используя '10s'
), но это может вызвать проблемы с кодировками переменной ширины, такими как UTF-8 (где некоторые символы имеют более одного байта).
Существует несколько различных способов кодирования этой информации в двоичном потоке;например строки в стиле C заканчиваются нулевым байтом (b'\0'
), в то время как более распространенным является сохранение длины строки сначала (в качестве префикса), а затемзапишите байты.
Строковое представление в двоичном формате нетривиально, и вы должны тщательно продумать, как вы хотите представить свои данные, прежде чем продолжить.См. статью Википедии о строках для более подробной информации.
NB Если все, что вы хотите сделать, это сохранить одну строку в файле, то этосделано очень легко, используя ответ Шей.В этом случае файловая система сама сообщает Python, как долго файл (в байтах) и когда прекратить чтение данных.
Этот подход не работает, когда вы храните структуру данных, состоящую из лотов.разных частей.