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

Резултати

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

Пребарај: #franck

当前筛选 #franck清除筛选
音乐小本本

@PaulsNote · Post #493 · 05.07.2020 г., 15:54

Franck的这首曲子又回来了 第N次推这首曲子。这次是Lugansky演奏的现场版。Lugansky毕业于莫斯科音乐学院(这么绅士我一直以为是英国人emmmm) #Franck#Romantic https://youtu.be/rShTuYqfm8E

Classical Music

@exploreclassical · Post #186 · 30.01.2021 г., 12:04

今天推荐一首很精彩的浪漫主义复调作品:Prelude Chorale and Fugue。这部作品是伟大的法国作曲家 César Franck 在1884年创作的,写完这部作品不久,Franck就去世了。Fracnk呢是法国著名的作曲家,钢琴家,管风琴家,比我们熟知的一些浪漫派音乐家Chopin 啊,Liszt啊,小个十来岁。他和布鲁克纳啊,Clara Schumann (Robert Schumann 的太太),差不多是一伐,算是法国浪漫主义的领军人物。 Franck 特别喜欢在自己的作品中用“套曲”的模式。一部作品可以分成很多部分,每个部分在独立之中又有些相互的联系。这首 “Prelude Chorale and Fugue” 也不例外。它可以分成三部分,每部分都有自己独立的乐思。前奏曲充满了梦幻奇谲的特质,圣咏部分则是“凝重而高贵”。在最后的fugue中,Franck重新引入了第一部分和第二部分的元素,并且将第二部分的圣咏主题和fugue的主题叠置,形成了类似于double fugue的结构,充满了复杂的对位,辉煌而艰深。我们选择的版本来自于法国钢琴大师Cortot的诠释,虽然在一些细小的地方偶有瑕疵,但是他细腻的触键,多变的音色,精巧的处理依然让他的诠释光辉夺目。 #frenchcomposer#franck#piano https://www.youtube.com/watch?v=FDNswBilzoU