Можно ли в Python создавать бинарные файлы? Конечно можно.
Для этого в Python есть следующие инструменты:
▫️ тип данных bytes и bytearray
▫️ открытие файла в режиме wb (write binary) или rb (read binary)
▫️ модуль struct
Про модуль struct поговорим в первую очередь.
Файл в формате JSON или Yaml внутри себя содержит разметку данных. Всегда можно определить где список начался а где закончился. Где записана строка а где словарь. То есть формат записи данных содержит в себе элементы разметки данных.
В binary-файле данные не имеют визуальной разметки. Это просто байты, записанные один за другим. Правила записи и чтения находятся вне файла.
Модуль struct как раз и помогает с организацией данных в таком файле с помощью определения форматов записи для разных частей файла.
Модуль struct преобразует Python-объекты в массив байт, готовый к записи в файл и имеющий определённый вид.
Для этого всегда следует указывать формат преобразования (или, как оно здесь называется - запаковки).
Формат нужен для того, чтобы выделить достаточное количество байт для записи конкретного типа объекта. В последствии с помощью того же формата будет производиться чтение.
При этом следует помнить что мы говорим о типах языка С а не Python.
Именно формат определяет, что записано в конкретном месте файла, число, строка или что-то еще.
Вот какие токены формата у нас есть.
Помимо этого, первым символом можно указать порядок байтов. На разных системах одни и те же типы данных могут записываться по-разному, поэтому желательно указать конкретный способ из доступных. Если этого не сделать, то используется символ '@', то есть нативный для текущей системы.
В строке формата мы пишем в каком порядке и какие типы собираемся преобразовать в байты.
Запакуем в байты простое число, токен "i".
>>> import struct
>>> struct.pack('=i', 10)
b'\n\x00\x00\x00'
Теперь несколько float, при этом нужно передавать элементы не массивом а последовательностью аргументов.
>>> struct.pack('=fff', 1.0, 2.5, 4.1)
b'\x00\x00\x80?\x00\x00 @33\x83@'
Вместо нескольких токенов можно просто указать нужное количество элементов перед одним токеном, результат будет тот же.
>>> struct.pack('=3f', 1.0, 2.5, 4.1)
b'\x00\x00\x80?\x00\x00 @33\x83@'
Теперь запакуем разные типы
>>> data = struct.pack('=fiQ', 1.0, 4, 100500)
я запаковал типы float, int и unsigned long long (очень большой int, на 8 байт)
b'\x00\x00\x80?\x04\x00\x00...'
Распаковка происходит аналогично, но нужно указать тот же формат, который использовался при запаковке. Результат возвращается всегда в виде кортежа.
>>> struct.unpack('=fiQ', data)
(1.0, 4, 100500)
Как видите, ничего страшного!
#lib#basic
🛡️ Tver: El principado olvidado que casi domina la Rus en el siglo XV
En la primera mitad del siglo XV, la histórica ciudad de Tver —situada a orillas del río Volga, al noroeste de Moscú— vivió su último gran momento de poder como principado independiente bajo el gobierno de Boris Alexandrovich (1425-1461). Fue una etapa de prosperidad, construcción y diplomacia que muchos rusos recuerdan con nostalgia como un breve destello de grandeza antes de que Moscú impusiera su hegemonía sobre toda la Rus del Norte.
📍Construcción y esplendor urbano
Durante el mandato de Boris Alexandrovich, Tver se transformó: se levantó un palacio principesco de piedra dentro del Kremlin —el segundo de este tipo en la región después del de Bogolyubovo— y se erigieron templos y campanarios de piedra que realzaron la importancia espiritual y cultural de la ciudad. Entre ellos: la catedral dedicada a Juan el Misericordioso (1420), las iglesias de San Boris y San Gleb (1438) y del Arcángel Miguel (1455), además de templos en los monasterios de Fedorovsky y Zheltikov.
📈Economía, comercio y aventuras lejanas
La ciudad no solo fue muros y catedrales. Su auge económico se apoyó en intensos lazos comerciales y actividad diplomática. Por ejemplo, el famoso viajero Afanasy Nikitin —que emprendió la legendaria travesía hacia India entre 1466 y 1474— partió desde estas tierras, llevando la curiosidad rusa más allá de Asia Central. La presencia del embajador de Tver en el Concilio de Florencia también subraya la ambición internacional del principado.
💍Alianzas dinásticas con Moscú (y tensiones)
En 1452, la hija de Boris de Tver, María Borisovna, se casó con Ivan Vasilievich, futuro gran príncipe y luego Iván III de Moscú. Este matrimonio unió temporalmente a dos fuerzas rusas poderosas, pero también marcó el inicio de una relación compleja entre ambos principados.
⚔️El fin de un sueño independiente
Mientras Moscú crecía en poder, Tver trató de mantener su autonomía mediante alianzas con Lituania y Novgorod, movimientos que terminaron siendo desventajosos. En 1485, después de semanas de tensión creciente, Iván III movilizó su ejército y ocupó Tver sin grandes combates; el príncipe Mijail Borisovich huyó hacia Lituania, y el principado dejó de existir como entidad política independiente.
La caída de de este principado simboliza el paso de la fragmentación feudal a la centralización del estado ruso bajo Moscú. Aunque siguió siendo un centro comercial y cultural relevante en siglos posteriores, su era de independencia terminó aquí, marcando un punto de inflexión en la historia de la Rusia medieval.
#HistoriaRusa#Tver#SigloXV#IvanIII#RusMedieval
Apóyanos pulsando👉'BOOST'👈
🖥https://vamosarusia.com
💬@vamosarusia
Lady Death
📅Año 2004
⏱Duración 80min.
🎥Dirección#AndyOrjuela
📄Guion Carl Macek.
📚Cómic#BrianPulido
🎼Música Bill Brown
🎬Productora AIC
Género#Animación#Acción#Fantasía#Cienciaficción#Terror#SigloXV#Cómic
Reparto | Trailer | Sinopsis
Ver Aquí
AnexoMarvel | Animación | Fantasía | SciFi | Terror | Edad Media | Comic