Python Glossary English

все 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Сообщить о неточности