TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #241 · 5 мај

Можно ли в 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

Hashtags

Резултати

Пронајдени 2 слични објави

Пребарај: #antiwar

当前筛选 #antiwar清除筛选

Ciao! 24.6. La guerra su vasta scala della Russia contro l'Ucraina dura ormai da 3 anni e 4 mesi. 1217 giorni. Leggiamo le notizie e vediamo come le città ucraine siano costantemente sottoposte ai bombardamenti più brutali. Vediamo case rase al suolo, l'impotenza e la tragedia dei civili, le lacrime dei genitori, le fotografie dei morti. 24.6 - Sono stati lanciati 368 missili e droni contro l'Ucraina. Regioni di Kiev, Dnepr, Donetsk, Kharkov, Sumy, Odessa. Secondo i dati preliminari, 19 persone sono morte, compresi bambini, e decine sono rimaste ferite. Oggi, edifici residenziali, scuole, asili e strutture mediche sono stati nuovamente distrutti. Importante di ricordarvi le nostre proteste a sostegno dell’Ucraina e ribadire ancora una volta: non abituatevi alla guerra! https://www.instagram.com/share/p/BAiwoNaDDM?fhid=QkFpd29OYURETQ Cosa più importante, vi chiediamo di sostenere la raccolta fondi del Comitato contro la Guerra. Si tratta di una raccolta punti attualmente in corso, che potremmo chiudere rapidamente tutti insieme, per le centrali elettriche portatili dell'Ospedale N7 di Zaporižžja. https://antiwarcommittee.info/en/energy-for-life/ L'importo totale mancante è di € 11.000 (su € 26.000). Siamo almeno 20 organizzazioni e se ognuna di esse raccoglie 500 euro, un lotto di questi generatori, già in attesa nel magazzino del fornitore, potrà essere spedito in Ucraina nel giro di pochi giorni. Crediamo che ci saranno 100 persone che riusciranno a trasferire 5 €! https://antiwarcommittee.info/en/energy-for-life/#donate (Tutte le spese saranno trasferite centralmente sul conto dei nostri colleghi dell'organizzazione spagnola, che elaboreranno l'ordine e supervisioneranno la consegna.) Pubblicheremo il resoconto sui social network! Per qualsiasi domanda, contattare: [email protected] #energy4UA #energy4life #russicontrolaguerra #antiwar

Привет! 24.6. Уже 3 года и 4 месяца длится полномасштабная война России против Украины. 1217 дней.. Мы смотрим новости и видим, как украинские города постоянно подвергаются жесточайшим обстрелам. Видим до основания разрушенные дома, беспомощность и трагедию мирных жителей, слезы родителей, фотографии погибших людей. 24.6 - 368 ракет и дронов было выпущено по Украине. Киев, Днепр, Донецкая, Харьковская, Сумская, Одесская область. По предварительным данным, погибло 19 человек, среди них дети, десятки раненых. Сегодня снова были разрушены жилые дома, школы, детские сады, медицинские учреждения. Хочется напомнить о наших протестах в поддержку Украины и сказать ещё раз - не привыкайте к войне! https://www.instagram.com/share/p/BAiwoNaDDM?fhid=QkFpd29OYURETQ И самое главное, просим вас поддержать сбор Антивоенного комитета. Это актуальный на данный момент точечный сбор, который мы все вместе смогли бы быстро закрыть - на портативные электростанции для Запорожской больницы N7. https://antiwarcommittee.info/energyforua/ Недостающая общая сумма €11.000 (из €26.000). Нас минимум 20 организаций, и если каждая соберет по €500, то партия этих генераторов, которая уже ждёт на складе у поставщика, сможет в считанные дни отправиться в Украину. Верим, что наберется 100 человек, которые смогут перевести по €5! https://antiwarcommittee.info/energyforua/#donate (Все сборы централизованно пойдут на счет наших коллег из испанской организации, которые оформят заказ и проконтролируют доставку.) Отчёт мы разместим в соцсетях! Если есть вопросы, задавайте: [email protected] #energy4UA #energy4life #russicontrolaguerra #antiwar