Можно ли в 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
🌎 Surrounded by Antarctic ice, Villa Las Estrellas is a small Chilean settlement built for scientists and their families. It has a school, post office, and even a hospital. In winter, temperatures can plummet below –20°C, and all residents must have their appendix removed before arrival due to limited medical capacity. ✨
#Antarctica⚡#settlement⚡#science
👉subscribe Interesting Planet
👉more Channels
🌍 The world's population density varies wildly—Macau holds more than 20,000 people per square kilometer, while Greenland has less than one person per square kilometer, reflecting extremes in settlement. ✨
#population⚡#density⚡#settlement⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 The southernmost permanently inhabited place, Puerto Toro in Chile, sits at geographic coordinates 55°05′ S, 67°04′ W—closer to the South Pole than anywhere else with year-round residents. ✨
#coordinates⚡#latitude⚡#settlement⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography🌍
🌍 The ancient city of Angkor in Cambodia covered more land than any other pre-industrial city, with a vast network of canals and reservoirs that shaped both its culture and the landscape for centuries. ✨
#historicalgeography⚡#archaeology⚡#settlement⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🚀 Lakeview Loan Servicing Reaches $26 Million Settlement Over Data Breach
Lakeview Loan Servicing has agreed to a proposed $26 million settlement following a data breach that impacted 2.53 million individuals in the United States. According to NS3.AI, the lawsuit alleges that unauthorized actors gained access to the company's systems, potentially exposing names, Social Security numbers, financial account details, and other personal information. While Lakeview denies any wrongdoing, eligible class members may receive compensation, credit monitoring, and identity protection if the settlement is approved.
#DataBreach#Settlement#Privacy#IdentityProtection#FinancialServices#CyberSecurity#USNews
Как говорил Брюс Ли, лучшая битва — та, которой удалось избежать.
Вчера это снова сработало на практике. После наших писем о запуске арбитражной процедуры и параллельного запроса на утверждение арбитра ответчик по делу, о котором я писал ранее, вышел с предложением урегулировать спор миром. Без арбитража.
Клиент доволен. Теперь спокойно смотрим на условия мирового соглашения и считаем экономику.
Это хороший пример того, как арбитраж работает ещё до арбитража. Сам факт правильно оформленного procedural pressure — уведомление о последствиях, сроках, затратах, составе трибунала — часто становится триггером для переговоров. У ответчика появляется выбор: либо контролируемый диалог сейчас, либо дорогой и долгий процесс потом.
Именно поэтому я всегда говорю клиентам: даже если вы готовы идти в арбитраж, не начинайте с удара. Начинайте с чёткого сигнала. Дайте оппоненту шанс принять рациональное решение. Это экономит деньги, время и нервы. А иногда — полностью снимает спор.
Арбитраж — это не только про выиграть дело. Это про умение так выстроить стратегию, чтобы до дела вообще не дошло.
Если вы работаете с английским правом, контрактами или международными спорами, думайте стратегически уже на этапе первых писем.
Подписывайтесь на English Law Report — здесь разбираем, как право работает в реальной жизни, а не в теории.
#EnglishLawReport#EnglishLaw
#Arbitration#LMAA
#LegalStrategy#DisputeResolution
#PreArbitration#Settlement
#ContractStrategy
Поддержать канал можно: Tribute | Boosty | Tirikchilik
🚀 JPMorgan to Extend Tokenization Platform to Canton Network via Kinexys
JPMorgan is set to enhance its tokenization platform by supporting its JPM deposit token on the Canton Network this year through Kinexys. According to NS3.AI, this initiative is linked to a network that handles $350 billion in daily U.S. repo settlements. The move aims to integrate JPMorgan's tokenization capabilities with the Canton Network, potentially streamlining financial processes and enhancing efficiency in settlement operations.
#JPMorgan#Tokenization#CantonNetwork#Kinexys#Finance#Settlement#Blockchain#DigitalAssets#Efficiency
🚀 State Farm Settles Class Action for $20.93 Million Over Misleading Policies
State Farm has agreed to establish a $20.93 million fund to resolve a class action lawsuit alleging the sale of misleading U Coverage policies to motorists in New Mexico. According to NS3.AI, the settlement pertains to policies purchased between January 1, 2010, and December 31, 2021. Affected policyholders must submit their claims by July 2.
#StateFarm#ClassAction#Settlement#MisleadingPolicies#UCoverage#NewMexico#Insurance#Lawsuit#Claims
OKX Settles Dispute with US DOJ
🕊OKX settles dispute with the US Department of Justice, admitting fault for operating without a license. The exchange will pay $84 million in fines and forfeit $421 million in commissions from US clients. This settlement marks a pivotal point for OKX, allowing continued collaboration with regulators to enhance solutions for clients and the crypto market. Details:OKX Announcement
🟠 In related news, $635 million in leveraged Bitcoin positions were liquidated within 24 hours.
#Crypto#Bitcoin#OKX#Regulations#Compliance
#OKX#Crypto#Bitcoin#Finance#Regulations#Compliance#Investment#Blockchain#US#Litigation#Trading#Market#Fines#Exchanges#Leveraged#Settlement#Lawsuits#Justice#USDOJ#CryptoMarket