Я пытаюсь записать определенное количество байтов строки в файл. В C это было бы тривиально: поскольку каждый символ равен 1 байт, я просто напишу сколько бы символов из строки, которую я хочу.Как отрезать определенное количество байтов от строки в Python?
В Python, однако, поскольку, очевидно, каждый символ/строка является объектом, они имеют разные размеры, и я не смог найти, как нарезать строку на уровне байтового уровня.
вещи я попытался:
ByteArray,: (для $, прочитать >>>
, который портит форматирование.)
$ barray = bytearray('a')
$ import sys
$ sys.getsizeof(barray[0])
24
Так превращение персонажа в ByteArray не превратить его в массив байтов, как я ожидал, и мне не ясно, как изолировать отдельные байты.
нарезка байтовые объекты, как описано here:
$ value = b'a'
$ sys.getsizeof(value[:1])
34
Опять же, размер 34 явно не 1 байт.
memoryview:
$ value = b'a'
$ mv = memoryview(value)
$ sys.getsizeof(mv[0])
34
$ sys.getsizeof(mv[0][0])
34
Ord():
$ n = ord('a')
$ sys.getsizeof(n)
24
$ sys.getsizeof(n[0])
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
sys.getsizeof(n[0])
TypeError: 'int' object has no attribute '__getitem__'
Так как я могу разрезать строку на определенное количество байт? Меня не волнует, что нарезка строки фактически приводит к сохранению отдельных символов или что-либо, что касается C; это просто должно быть одинаковым каждый раз.
Ничего себе. Я не знал, что write() и разделение строки, как это могло бы сделать это. Что меня отбросило, так это то, что sys.getsizeof (s [: 1]) возвращался 34. Спасибо! – user124384
@ user124384 Что означает 'sys.getsizeof', это размер объекта' String', а не массив базового байта. – satoru
Я вижу. Как можно получить размер базового массива байтов? Как я показал в своих примерах, просто использование 'getsizeof()' на байтарах не похоже на это. – user124384