Ответ 1
import sys
sys.getsizeof(s)
# getsizeof(object, default) -> int
# Return the size of object in bytes.
Но на самом деле вам нужно знать его представленную длину, поэтому что-то вроде len(s)
должно быть достаточно.
Есть ли какая-то функция, которая скажет мне, сколько байтов занимает строка в памяти?
Мне нужно установить размер буфера сокета, чтобы сразу передать всю строку.
import sys
sys.getsizeof(s)
# getsizeof(object, default) -> int
# Return the size of object in bytes.
Но на самом деле вам нужно знать его представленную длину, поэтому что-то вроде len(s)
должно быть достаточно.
Если это Python 2.x str
, получите его len
. Если это Python 3.x str
(или Python 2.x unicode
), сначала кодируйте на bytes
(или a str
, соответственно), используя предпочтительную кодировку ('utf-8'
- хороший выбор) а затем получить len
закодированного объекта bytes/str.
Например, символы ASCII используют по 1 байт каждый:
>>> len("hello".encode("utf8"))
5
тогда как китайцы используют по 3 байта каждый:
>>> len("你好".encode("utf8"))
6