@PracticalInformation · Post #1463 · 14.03.2023 г., 18:24
How to tie the Alpine Butterfly Knot #Bushcraft @EvolvedTruth
Hashtags
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
Пребарај: #bushcraft
@PracticalInformation · Post #1463 · 14.03.2023 г., 18:24
How to tie the Alpine Butterfly Knot #Bushcraft @EvolvedTruth
Hashtags
@PracticalInformation · Post #1517 · 23.06.2023 г., 14:34
Plant Identification: A Practical Approach Using "Newcomb's Method" Identifying plants using Newcomb's Method involves looking at the flower type, the plant/branching type, and the leaf type. This system uses a series of questions to guide you towards species identification. The questions are as follows: For the flower type: Is the flower regular (radially symmetrical - which means symmetrical in any way it can be divided across the center, like a sunflower) (most flowers fall into this category); or is the flower irregular (only symmetrical when divided one way, such as a mint or pea flower); or are the flower parts indistinguishable (too small to see)? If regular, how many petals or similar parts does it have? For the plant/branching type: Is the plant a wildflower, or a woody shrub or vine? If a wildflower, is it without leaves; or if it has leaves, are they all at the base of the plant (basal); or are they arranged singly on the stem (alternate); or are they opposite one another in pairs or whorls (whorled means many leaves coming off in different directions from the same area of the stem, like cleavers)? For the leaf type: Are the leaves entire (smooth-edged), or are they toothed, or lobed (split into sections), or divided (separated into leaflets off the same stem)? 🔗Learn More About Newcomb's Method #Bushcraft#Homesteading Join @EvolvedTruth🌱
Hashtags