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

Резултати

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

Пребарај: #chinesedebate

当前筛选 #chinesedebate清除筛选

辯論,是愈辯愈明。 有見香港人的討論地方主要為匿名網上討論,加上愈具爭議性的話題,討論愈偏激,導致討論氣氛極差。尤其當今科技發達,人與人之間的距離以電話分隔,相隔一個屏幕的討論經常導致誤會和言語暴力。 匿名討論不能團結香港人,我們認為有必要推廣辯論,以改善討論風氣。希望香港人能夠走出網絡,面對面討論,比起匿名討論更有效地明辯是非。 HKSAcic 現推出第一屆 - 海外港人辯論比賽。比賽語言為粵語,並分為少年和大學組,如資源和人手許可則另設公開組。決賽將於1月28日,在英國實體舉行,以支持每年1月26日的「香港日」。比賽費用£50,部分團體可享八折優惠,希望各界能夠籌組辯論隊以機構名義參與比賽。 初賽到準決賽將會使用discord 應用程式進行比賽,決賽將會在英國某大城市舉行。 比賽將於8月9日開放報名,請留意我們專頁的最新資訊。活動詳情請掃描宣傳圖中QR code ,或上 linktr.ee/hksauk 查閱。因人手和交通問題,本屆比賽未能接受英國以外地區人士參與。 我們歡迎教會、公司和大學社團等合作和支持比賽,如有興趣提供場地或贊助,請聯絡我們email: [email protected] 或pm我地社交平台。 #hksacic#student#hksa#香港學生同盟#debate#chinesedebate#海外港人辯論比賽#ohkdc#辯論比賽#辯論#香港