все Python 3до 3.13Удалено из стандартной библиотекипонятие
xdrlib
удалённые модули
Упаковка данных в формат XDR (RFC 1014) для Sun RPC и NFS. Удалён в Python 3.13 — используйте struct с форматом big-endian.
Синтаксис
import xdrlib # до 3.13
xdrlib.Packer() складывал значения в буфер: pack_int(), pack_double(), pack_string() — а get_buffer() отдавал байты; Unpacker(байты) читал их обратно. Убран по PEP 594: XDR живёт почти только в Sun RPC и NFS, у которых своих клиентов на Python нет. Как переписать: XDR — это big-endian с выравниванием до 4 байт, поэтому struct.pack('>i', n) заменяет pack_int, struct.pack('>d', x) — pack_double, а строка пакуется длиной '>I' и байтами, дополненными нулями до кратного четырём. Обратно — struct.unpack с теми же форматами. Пакет standard-xdrlib на PyPI возвращает модуль.
Примеры
# Python 3.13+
try:
import xdrlib
except ModuleNotFoundError as e:
print(type(e).__name__) # → ModuleNotFoundError
# Python 3.13+
import struct
def pack_string(s):
return struct.pack('>I', len(s)) + s + bytes(-len(s) % 4)
data = struct.pack('>i', 1) + pack_string(b'ab')
print(data.hex()) # → 000000010000000261620000
import xdrlib
p = xdrlib.Packer()
p.pack_int(1)
p.pack_string(b'ab')
print(p.get_buffer().hex()) # → 000000010000000261620000
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности